Unity2D:旋转物体保持向前看
Unity2D: Rotate object keeping looking at front
我正在尝试归档 Z 轴旋转运动 围绕移动对象 始终保持 "looking at front" 但没有成功。所以它应该是这样的:
我得到的最接近的是:
transform.RotateAround(targetPosition, Vector3.forward, moveSpeed);
但它不会一直寻找 "at front"。
有人可以帮助我吗?
提前致谢。
此致。
Fitst 存储当前旋转,然后围绕点旋转,最后应用之前的旋转。
var rot = transform.rotation;
transform.RotateAround(targetPosition, Vector3.forward, moveSpeed);
transform.rotation = rot;
一个简单的解决方案就是操纵实际坐标并忽略旋转^^ 如果一个对象移动并且您希望它继续围绕它旋转,只需将它设为子对象即可。
这是我们围绕 Y 旋转的 3d 解决方案:
void Start() { angle = 0.0f }
void Update() {
angle += speed * Time.deltaTime; //Your starting angle that will be modified every frame
CheckAngle(ref angle);
float x = Mathf.Cos(angle * Mathf.Deg2Rad) * Radius;
float z = Mathf.Sin(angle * Mathf.Deg2Rad) * Radius;
}
static void CheckAngle(ref float Angle) //It should probably return a value by it's name here tho not ref, not sure which is the correct way of doing this
{
if (Angle > 360) //You don't want your angle to go past the boundaries of an INT
Angle = 0;
}
如果您的对象 ("Lightning Bolt") 没有世界旋转,即像您的示例图像所暗示的那样与世界轴对齐,那么最简单的方法就是将世界旋转简单地设置为四元数身份:
transform.rotation = Quaternion.identity;
请注意,如果其父对象旋转,图像将不会旋转。它基本上 "Billboard" 你的闪电对象。如果你想让你的闪电与父对象对齐,然后尝试这样的事情:
transform.rotation = transform.parent.rotation;
我正在尝试归档 Z 轴旋转运动 围绕移动对象 始终保持 "looking at front" 但没有成功。所以它应该是这样的:
我得到的最接近的是:
transform.RotateAround(targetPosition, Vector3.forward, moveSpeed);
但它不会一直寻找 "at front"。
有人可以帮助我吗?
提前致谢。
此致。
Fitst 存储当前旋转,然后围绕点旋转,最后应用之前的旋转。
var rot = transform.rotation;
transform.RotateAround(targetPosition, Vector3.forward, moveSpeed);
transform.rotation = rot;
一个简单的解决方案就是操纵实际坐标并忽略旋转^^ 如果一个对象移动并且您希望它继续围绕它旋转,只需将它设为子对象即可。
这是我们围绕 Y 旋转的 3d 解决方案:
void Start() { angle = 0.0f }
void Update() {
angle += speed * Time.deltaTime; //Your starting angle that will be modified every frame
CheckAngle(ref angle);
float x = Mathf.Cos(angle * Mathf.Deg2Rad) * Radius;
float z = Mathf.Sin(angle * Mathf.Deg2Rad) * Radius;
}
static void CheckAngle(ref float Angle) //It should probably return a value by it's name here tho not ref, not sure which is the correct way of doing this
{
if (Angle > 360) //You don't want your angle to go past the boundaries of an INT
Angle = 0;
}
如果您的对象 ("Lightning Bolt") 没有世界旋转,即像您的示例图像所暗示的那样与世界轴对齐,那么最简单的方法就是将世界旋转简单地设置为四元数身份:
transform.rotation = Quaternion.identity;
请注意,如果其父对象旋转,图像将不会旋转。它基本上 "Billboard" 你的闪电对象。如果你想让你的闪电与父对象对齐,然后尝试这样的事情:
transform.rotation = transform.parent.rotation;