我已经暂时搁浅了这个问题一段时间了,而且我不知道这个问题。
问题:
目前正试图做一个虚假的“摇摆”时刻。如果我将玩家对象变成对象的子对象,则可以在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);
/// 我认为这些可能没有帮助,但更好地展示我到目前为止所处的位置。
答案 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;