【发布时间】:2021-07-04 19:49:33
【问题描述】:
我正在学习 Unity3D,但我的 3D 雷达遇到了一些问题。我的雷达是我的 Player 游戏对象的子对象,它在我飞行时旋转。雷达本身旋转了 45 度,因此它面向用户。有一个立方体应该是敌机的雷达信号。 Cube 是 Radar 的子对象,因此应该继承它的旋转。 Cube 上有一个脚本可以在每次 update() 时更新自身。这是层次结构:
Enemy Plane
Player
-- Camera
-- Radar
------ Cube (radar representation of Enemy Plane)
问题在于,当立方体本身旋转时,使用雷达,它的运动不是。当我靠近敌机时,立方体只是靠近相机(这很好),但我希望它的运动跟随父雷达对象的 45 度旋转?
public class RadarGlyph : MonoBehaviour
{
GameObject radarSource;
GameObject trackedObject;
Vector3 radarScaler;
void Start()
{
this.radarSource = GameObject.Find("Radar");
this.trackedObject = GameObject.Find("Enemy Fighter");
this.radarScaler = new Vector3(0.001f, 0.001f, 0.001f);
}
void Update()
{
Vector3 vDelta = this.trackedObject.transform.position - this.radarSource.transform.position;
vDelta.Scale(this.radarScaler);
this.transform.localPosition = this.transform.InverseTransformDirection(vDelta);
}
}
【问题讨论】:
-
你能解释一下立方体是如何移动的以及它应该如何移动吗?目前有点难以想象。
-
如果我直奔敌舰,立方体会直接朝我移动。相反,它应该以雷达的微小角度移动。就像它在我的空间中移动一样,根本不使用雷达旋转,即使立方体是雷达的子对象。
-
我在回答中建议的两项更改中的一项是否有效?
-
是的,我试过第一个,效果很好。但为什么?为什么我必须由它的父级旋转它,它不应该由它的父级旋转吗?
-
我编辑了我的答案以包含一些解释。感谢您的支持!
标签: unity3d