【发布时间】:2014-06-22 03:30:10
【问题描述】:
我刚开始使用 Unity 和 C#,我正试图让敌人追逐玩家。为了让敌人找到并追逐玩家,我使用以下代码:
public GameObject attackingg;
public Entity attacking;
public int distance;
private bool canAttack;
void Start () {
canAttack = true;
if(attackingg = null){
attackingg = GameObject.FindGameObjectWithTag("Player");
attacking = attackingg.GetComponent<Entity>();
}
}
void Update () {
if(attacking.rigidbody2D.transform.position.y>rigidbody2D.transform.position.y - distance)
{
rigidbody2D.transform.position += Vector3.up * speed * Time.deltaTime;
}
if(attacking.rigidbody2D.transform.position.y<rigidbody2D.transform.position.y - distance)
{
rigidbody2D.transform.position += Vector3.down * speed * Time.deltaTime;
}
if(attacking.rigidbody2D.transform.position.x>rigidbody2D.transform.position.x+ distance)
{
rigidbody2D.transform.position += Vector3.right * speed * Time.deltaTime;
}
if(attacking.rigidbody2D.transform.position.x<rigidbody2D.transform.position.x - distance)
{
rigidbody2D.transform.position += Vector3.left * speed * Time.deltaTime;
}
if (Vector2.Distance (rigidbody2D.transform.position, attacking.transform.position) <= distance && canAttack) {
attackEntity();
StartCoroutine(waitForAttack());
}
}
运行游戏时出现以下错误:
NullReferenceException:对象引用未设置为对象的实例 AttackingMob.Update () (在 Assets/Code/Entities/Mobs/AttackingMob.cs:22)
为什么会发生这种情况,我可以做些什么来解决我的问题?非常感谢任何帮助,谢谢。
【问题讨论】: