如何以给定的速度前往目标

时间:2014-04-11 09:55:34

标签: unity3d

我正在为我的游戏添加导弹导弹,但是在更新中遇到一些问题会弄清楚如何前往目标。我已经计算了距离,并且随着时间的推移减去了它的速度..但是我可以将它添加到位置吗?

using UnityEngine;
using System.Collections;

public class MissileScript : MonoBehaviour {

    public GameObject Target;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

        float distance = Vector3.Distance(Target.transform.position, transform.position);
        distance -= .1 * Time.deltaTime;

        ???
    }
}

2 个答案:

答案 0 :(得分:1)

你不需要知道距离。您的游戏对象也应该有Speed值。然后你可以做以下事情:

  1. 计算方向向量
  2. 规范化方向向量
  3. 使用SpeedTime.deltaTime
  4. 创建移动因子
  5. 使用Transform.Translate功能移动游戏对象
  6. 这样的事情:

    public GameObject Target;
    public float Speed;
    
    void Update()
    {
       Vector3 direction = Target.transform.position - this.transform.position;
       direction.Normalize();
       float factor = Time.deltaTime * Speed;
       this.transform.Translate(direction.x * factor, direction.y * factor, direction.z * factor, Space.World);
    }
    

答案 1 :(得分:0)

你应该阅读转向行为,特别是寻求行为。 它实际上很容易实现,而且比简单地在直线上使用翻译更为现实。

点击此链接:http://gamedevelopment.tutsplus.com/tutorials/understanding-steering-behaviors-seek--gamedev-849