[英]Unity point game object to another only on the Local Y Axis
我想让一个游戏对象仅在本地 Y 轴上指向另一个。
void FixedUpdate()
{
if(started){
Quaternion lookRot = Quaternion.LookRotation(target.position - transform.position);
transform.rotation = Quaternion.Lerp(transform.rotation,Quaternion.Euler(transform.eulerAngles.x, lookRot.eulerAngles.y, transform.eulerAngles.z),1);
}
}
如果我对你的理解正确,你想要实现的是使这个 object “指向”目标,但只允许它绕其局部 Y 轴旋转。
我会为此做的是 map 目标实际 position 到一个数学Plane
上,该平面抛出该对象的 position 并正常使用局部 Y 轴。
然后让你的 object 面向这个映射的 position 另外还传入局部 Y 轴作为目标 UP 向量,这意味着它仅围绕其局部 Y 轴旋转。
像例如
void FixedUpdate()
{
if(started)
{
var targetPosition = target.position;
var plane = new Plane(transform.up, transform.position);
var mappedTargetPosition = plane.ClosestPointOnPlane(targetPosition);
Quaternion lookRot = Quaternion.LookRotation(mappedTargetPosition - transform.position, transform.up);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.