Unityで高度な敵AIスクリプトを作成しようとしていますが、私は少しこれで苦労しています。私はすでにアニメーションとすべてをインポートしましたが、スクリプトの部分はうまくいきません。私がやろうとしている何Unity Enemy AIスクリプトC#
: NPCは(がをisWalking)再び歩き、その後、数秒間、一定の半径内(がをisWalking)歩くアイドル(isIdle)必要があります。プレイヤーはNPCの視界半径内部に入った場合には、プレイヤーが至近距離(isAttacking)内にあるとき
、NPCはプレイヤー(isRunning)、攻撃の後に実行する必要があります。プレイヤーが範囲外になると、NPCは2回目のアイドルアニメーションを1回再生し(isIdle2)、最初のアイドルアニメーション(isIdle)に戻ります。
最後に、Eキーを押すと、NPCはトークアニメーションを1回再生する必要があります(isTalking)。
これは私の現在のスクリプトです:あなたが仕事をしたいどのような
using UnityEngine;
using System.Collections;
public class guardAttack : MonoBehaviour {
public Transform player;
static Animator anim;
// Use this for initialization
void Start()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
Vector3 direction = player.position - this.transform.position;
float angle = Vector3.Angle(direction,this.transform.forward);
if (Vector3.Distance (player.position, this.transform.position) < 10 && angle < 30) {
direction.y = 0;
this.transform.rotation = Quaternion.Slerp (this.transform.rotation,
Quaternion.LookRotation (direction), 0.1f);
anim.SetBool ("isIdle", false);
if ((direction.magnitude > 5)) {
this.transform.Translate (0, 0, 0.10f);
anim.SetBool ("isRunning", true);
anim.SetBool ("isAttacking", false);
anim.SetBool ("isTalking", false);
anim.SetBool ("isIdle2", false);
} else {
anim.SetBool ("isRunning", false);
anim.SetBool ("isAttacking", true);
anim.SetBool ("isTalking", false);
anim.SetBool ("isIdle2", false);
}
} else {
anim.SetBool("isIdle", true);
anim.SetBool("isRunning", false);
anim.SetBool("isAttacking", false);
anim.SetBool("isIdle2",false);
if (Input.GetKeyDown (KeyCode.E)) {
anim.SetBool("isTalking", true);
}
}
}
}
実際の質問/問題は何ですか? – TyCobb