我找不到这个问题的单个答案。很抱歉,如果这是重复的帖子,但找不到任何内容。
我试图在Unity 2D游戏中逆时针为对象设置动画。我假设必须有一个简单的一两行代码才能执行此操作,但是我无法弄清楚。我读过的所有内容都说顺时针旋转很容易,但是Unity使逆时针旋转更加复杂吗?
答案 0 :(得分:1)
在我们讨论这个问题的编码位之前。 您首先需要了解要实现的目标背后的逻辑。 逆时针只是您要旋转的角度,但取反(-)。
只需围绕对象以2D旋转即可:
using UnityEngine;
public class Example : MonoBehaviour
{
void Update()
{
// Spin the object around the world origin at 20 degrees/second.
transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime);
}
}
在2D模式下,旋转轴将根据您要旋转的方向简单地变为Vector3.back或Vector3.forward
示例来自:https://docs.unity3d.com/ScriptReference/Transform.RotateAround.html
正如“程序员”用户指出的那样:transform.Rotate
可以解决这个问题,如果您不想围绕另一个对象旋转对象。
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
void Update()
{
// Rotate the object around its local X axis at 1 degree per second
transform.Rotate(Vector3.right * Time.deltaTime);
// ...also rotate around the World's Y axis
transform.Rotate(Vector3.up * Time.deltaTime, Space.World);
}
}
示例来自:https://docs.unity3d.com/ScriptReference/Transform.Rotate.html
自从OP进一步阐明了他想要实现的目标。我将这些图像留作参考:
话虽如此:尝试:
Vector3 direction = player.transform.position - iss.transform.position;
float angle = Mathf.Atan2(dir.y, dir.x) * mathf.Rad2Deg;
iss.transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
答案 1 :(得分:0)
如果您正在使用transform.Rotate()
函数,则只需取反最后一个参数即可。
默认旋转方向为顺时针旋转,因此,如果取消顺时针旋转的值,则会使旋转逆时针旋转。
示例:
public float rotationSpeed = 100f;
public void rotateClockwise()
{
transform.Rotate(0f, 0f, (rotationSpeed * Time.deltaTime));
}
public void rotateCtrClockwise()
{
transfrom.Rotate(0f, 0f, -(rotationSpeed * Time.deltaTime));
}