如何测试一个对象与另一个 Unity 的距离
How to test for how far away an object is from another Unity
所以我正在尝试为我的游戏制作一个发射子弹的 Boss,但目前当主要玩家靠近它时我无法让子弹发射。到目前为止,这是我的代码:
public Transform firePoint;
public GameObject bulletPrefab;
// Update is called once per frame
void Update()
{
if()
{
Shoot();
}
}
void Shoot()
{
// shooting logic
Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
}
}
请问有什么帮助吗?谢谢!
完全取决于 check
对您意味着什么。
对于得到两个物体的距离有Vector3.Distance
var distance = Vector3.Distance(objA.transform.position, objB.transform.position);
这基本上等于使用 Vector3.magnitude
var distance = (objB.transform.position - objB.transform.position).magnitude;
但是,如果你的问题是比较到其他东西的距离,使用Vector3.sqrMagnitude
通常会稍微有效一些而不是像
private const float thresholdSqr = someDistance * someDistance;
和
var distanceSqr = (objB.transform.position - objB.transform.position).sqrMagnitude;
if(distanceSqr <= thresholdSqr)
{
...
}
所以我正在尝试为我的游戏制作一个发射子弹的 Boss,但目前当主要玩家靠近它时我无法让子弹发射。到目前为止,这是我的代码:
public Transform firePoint;
public GameObject bulletPrefab;
// Update is called once per frame
void Update()
{
if()
{
Shoot();
}
}
void Shoot()
{
// shooting logic
Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
}
}
请问有什么帮助吗?谢谢!
完全取决于 check
对您意味着什么。
对于得到两个物体的距离有Vector3.Distance
var distance = Vector3.Distance(objA.transform.position, objB.transform.position);
这基本上等于使用 Vector3.magnitude
var distance = (objB.transform.position - objB.transform.position).magnitude;
但是,如果你的问题是比较到其他东西的距离,使用Vector3.sqrMagnitude
通常会稍微有效一些而不是像
private const float thresholdSqr = someDistance * someDistance;
和
var distanceSqr = (objB.transform.position - objB.transform.position).sqrMagnitude;
if(distanceSqr <= thresholdSqr)
{
...
}