繁体   English   中英

Unity point game object to another only on the Local Y Axis

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM