2个向量与旋转的差异

时间:2012-11-28 18:23:46

标签: c# parent-child unity3d

我已经暂时搁浅了这个问题一段时间了,而且我不知道这个问题。

问题:

目前正试图做一个虚假的“摇摆”时刻。如果我将玩家对象变成对象的子对象,则可以在keypush期间锁定。

考虑到这一点,我需要在抓斗对象上获得正确的旋转,使得玩家的速度成为抓斗对象的正确旋转。

这不是2D,而是3D。这引起了这种头痛。

http://img843.imageshack.us/img843/7434/rotations.jpg

我想如果我能得到位置矢量,以及玩家前进方向的矢量,就像角色电机的速度一样,得到一个独特的矢量,这个矢量信息应该能够正确旋转抓斗对象。

然而,这就是我认为很容易的事情,但是我已经在这几个小时内乱砍这个向量差异以进行旋转,因为它被认为是。

TL:博士

2个矢量,这两个矢量的差异,这个矢量控制抓地物体的旋转,以适当的速度“假”摆动。

如果有答案,请提前感谢。

添加信息:

目前的测试一直是这些。

///

父Orb是grappleobjects,它根据触发事件更新其变换 CurDirection是玩家在世界中的向量中前进的地方 CurPos是玩家在世界范围内的时间点。

 CurDirection = (transform.position-ParentOrb.position);
 CurDirection.Normalize();

 motor.movement.velocity = (CurDirection);
 CurPos = transform.position;   

////

还试图从抓斗对象到玩家获得角度。

///

otherDirection =空间速度的方向  OtherDirectionPre =空间中的当前位置。

 Vector3 targetDir = otherDirection;
 Vector3 forward = otherDirectionPre;

 angle = Vector3.Angle(targetDir, forward);

/// 我认为这些可能没有帮助,但更好地展示我到目前为止所处的位置。

1 个答案:

答案 0 :(得分:1)

我想你知道击中点和中心之间的半径,让我们称之为r。随着玩家的速度v和轴的角速度ω(=ω),玩家应该连接到你有矢量方程式:

v =ω×r

假设所有3个向量彼此垂直,则有ω= v / r。

编辑:您从中心位置和碰撞接触点获得半径r:

Vector3 r = collision.contacts[0].point - center;
float radius = r.magnitude;
float angularSpeed = rigidbody.veloctiy.magnitude / radius;