Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 我如何以给定的速度到达目标_Unity3d - Fatal编程技术网

Unity3d 我如何以给定的速度到达目标

Unity3d 我如何以给定的速度到达目标,unity3d,Unity3d,我在游戏中添加了寻的导弹,但在更新中,我在如何到达目标方面遇到了一些问题。我已经计算了距离,并从中减去了速度。。但我能把它加到位置上吗 using UnityEngine; using System.Collections; public class MissileScript : MonoBehaviour { public GameObject Target; // Use this for initialization void Start () {

我在游戏中添加了寻的导弹,但在更新中,我在如何到达目标方面遇到了一些问题。我已经计算了距离,并从中减去了速度。。但我能把它加到位置上吗

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;

        ???
    }
}

你不需要知道距离。此外,您应该为游戏对象设置
速度
值。然后您可以执行以下操作:

  • 计算方向向量
  • 归一化方向向量
  • 使用
    Speed
    Time.deltaTime
    值创建移动因子
  • 使用
    Transform.Translate
    功能移动游戏对象
  • 大概是这样的:

    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);
    }
    

    您应该了解转向行为,尤其是寻求行为。 它的实现非常容易,而且比简单地在直线上使用翻译更现实


    检查此链接:

    更改
    速度
    值,直到获得正确的导弹速度