我尝试将围绕移动物体的z轴旋转运动归档,但始终失败,始终保持“向前看”。所以它应该看起来像这样:
与我最接近的是:
transform.RotateAround(targetPosition,Vector3.forward,moveSpeed);
但是它并没有一直保持在“前方”。
有人可以帮我吗?
谢谢。
最诚挚的问候。
答案 0 :(得分:1)
首先存储当前旋转,然后围绕点旋转,最后应用上一个旋转。
var rot = transform.rotation;
transform.RotateAround(targetPosition, Vector3.forward, moveSpeed);
transform.rotation = rot;
答案 1 :(得分:1)
如果您的对象(“闪电”)没有世界旋转,即您的示例图片似乎暗示着与世界轴线对齐,那么最简单的方法就是将世界旋转设置为四元数标识:
transform.rotation = Quaternion.identity;
请注意,如果图像的父对象旋转,则图像将不会旋转。它实际上将“广告牌”您的闪电对象。如果要使闪电与父对象对齐,请尝试执行以下操作:
transform.rotation = transform.parent.rotation;
答案 2 :(得分:0)
一个简单的解决方案就是操纵实际坐标并忽略旋转^^如果一个对象移动并且您希望它围绕它旋转,只需将其设为子对象即可。
这是3D解决方案,我们围绕Y旋转:
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;
}