【问题标题】:2 vectors difference to rotation2 个向量与旋转的差异
【发布时间】:2012-11-28 18:23:46
【问题描述】:

我已经在这个问题上徘徊了一段时间,但我一直没有弄清楚这一点。

问题:

目前正在尝试做一个假的“摇摆”时刻。我让玩家对象成为您可以在按键期间锁定的对象的子对象。

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

这不是 2D,而是 3D。这导致了这种头痛。

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

我想如果我能得到位置向量和玩家前进方向的向量,比如角色马达的速度,得到一个唯一的向量,这个向量信息应该能够正确旋转抓斗对象。

然而,我认为这很容易,但我已经研究了好几个小时才得到向量差来按照预期进行旋转。

tl:dr

2个向量,这两个向量的差为一个向量,这个向量控制抓斗物体的旋转,以适当的速度“假”一个摆动动作。

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

添加信息:

目前的测试是这些。

///

父球体是根据触发事件更新其变换的抓斗对象。
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);

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

【问题讨论】:

    标签: c# parent-child unity3d


    【解决方案1】:

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

    v = ω × r

    假设所有 3 个向量都相互垂直,则有 ω = v / r。

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

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

    【讨论】:

    • 可悲的是,我的数学很差,这让我目前很难理解这个帮助。在我的学生时代,我从来没有过多地研究弧度。不久前我开始使用 Unity 3d,所以仍然在接触它,所以大多是新手。
    • 我确信 Radius 会提供帮助,但我仍然不确定如何。为了让您了解我离我有多远,我将给出两个当前的原型脚本。请注意,这是非常早期的工作。当我说我是 3D 世界思维的新手时,我没有开玩笑,以前主要是 2D。这些是脚本。 vdxretrotainment.eu/CurrentScripts.zip我目前还有其他问题,但主要是要优先修复的抓斗。我也没有在数学上开玩笑。 >
    猜你喜欢
    • 2015-07-07
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多