我想沿着另一个游戏对象的y轴(绿色)旋转角色。
这是我的系统图片。
我想在红色箭头指示的方向旋转字符(见图,它不是x轴)。
我看了其他的问题,尝试了很多代码,但还是没有达到预期的效果。
这是我最新的代码,创建了上面的图片。
右边的图片是我想要的,但左边的图片不是。
任何建议都是感激不尽的。谢谢!
IEnumerator RotateToDirection(){
var targetRotation = new Vector3(0, ArrowObject.transform.localEulerAngles.y, 0);
var elapsedTime = 0.0f;
var waitTime = 1f;
while (elapsedTime < waitTime)
{
elapsedTime += Time.deltaTime;
Character.transform.localEulerAngles
= Vector3.Lerp(Character.transform.localEulerAngles, targetDirection, (elapsedTime / waitTime));
yield return null;
}
}
1条答案
按热度按时间hi3rlvi21#
不使用
eulerAngles
当您读取.eulerAngles属性时,Unity会将四元数旋转的内部表示转换为欧拉角。因为有多种方法可以使用欧拉角来表示任何给定的旋转,所以您读取的值可能与您指定的值有很大的不同。如果您试图逐渐增加值来生成动画,这可能会导致混淆。
从你的图像看,你似乎想让角色的前向轴与另一个对象的
up
轴对齐,所以你可能会使用例如Quaternion.LookRotation
这样的东西。