将对象旋转到目标,同时旋转以匹配地形坡度

问题描述 投票:0回答:1

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9BR09KVFQ5LnBuZz8xIn0=” alt =“替代文字”>

在上图中

  • 红色矢量是蜘蛛的前进矢量
  • [蓝色矢量是代表蜘蛛与其目标之间方向的矢量

在下面的代码中,orientation是代表地形法线的向量,因此蜘蛛与之对齐:

    Vector3 orientation = GetTerrainNormal();

    Quaternion rotationNeeded = Quaternion.FromToRotation(Vector3.up, orientation);

    transform.rotation = Quaternion.RotateTowards(
                transform.rotation,
                rotationNeeded,
                RotationSpeed * Time.deltaTime
    );

我的问题是,我无法设法使蜘蛛面向目标。当我添加任何使蜘蛛朝其旋转的代码时,它不再与地形的法线对齐,而是直说...

因此,基本上,如何使蜘蛛绕Y世界轴旋转(我认为),然后仍然旋转以匹配斜率?

unity3d rotation quaternions
1个回答
0
投票

尝试一下

Vector3 directionToTarget = target.transform.position - transform.position;
Quaternion rotationNeeded = Quaternion.LookRotation(directionToTarget, orientation);
© www.soinside.com 2019 - 2024. All rights reserved.