我正在为我的游戏添加导弹导弹,但是在更新中遇到一些问题会弄清楚如何前往目标。我已经计算了距离,并且随着时间的推移减去了它的速度..但是我可以将它添加到位置吗?
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;
???
}
}
答案 0 :(得分:1)
你不需要知道距离。您的游戏对象也应该有Speed
值。然后你可以做以下事情:
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);
}
答案 1 :(得分:0)
你应该阅读转向行为,特别是寻求行为。 它实际上很容易实现,而且比简单地在直线上使用翻译更为现实。
点击此链接:http://gamedevelopment.tutsplus.com/tutorials/understanding-steering-behaviors-seek--gamedev-849