为什么我的敌人脚本没有关注播放器?

时间:2016-06-09 15:10:56

标签: c# unity3d

为什么我的敌人脚本不跟随播放器?

using UnityEngine;
using System.Collections;

public class suivre : MonoBehaviour {

    GameObject perso;
    float persoposx;
    float persoposy;
    float persoposz;

    // Use this for initialization
    void Start () {
        perso = GameObject.FindGameObjectWithTag ("Player");
        InvokeRepeating ("follower", 1, 1);
    }

    // Update is called once per frame
    void Update () {
        persoposx = perso.transform.position.x;
        persoposy = perso.transform.position.y;
        persoposz = perso.transform.position.z;

    }

    void follower() {

        GetComponent<Rigidbody>().AddForce(new Vector3(persoposx, persoposy, persoposz));
    }
}

这个脚本是敌人的一个组成部分。敌人不跟随玩家,但仍朝着方向前进 - 为什么?

1 个答案:

答案 0 :(得分:1)

你缺少一个方向向量的概念。

您的代码应如下所示:

using UnityEngine;
using System.Collections;

public class suivre : MonoBehaviour 
{    
    public float speed = 3f;

    GameObject perso;

    void Start () 
    {
        perso = GameObject.FindGameObjectWithTag ("Player");
        InvokeRepeating ("follower", 1, 1);
    }

    void follower() 
    {    
        Vector3 directionToPlayer = perso.transform.position - this.transform.position;
        directionToPlayer.Normalize (); 

        GetComponent<Rigidbody>().AddForce(directionToPlayer * speed);
    }
}

摆脱Update方法。你在这里不需要它。

然后创建从敌人到玩家的方向向量,对其进行标准化,然后将此向量传递给AddForce并将其乘以您想要的速度。