【问题标题】:How to move rotated knife(RigidBody2D) diagonally?如何对角移动旋转刀(RigidBody2D)?
【发布时间】:2020-02-27 08:09:05
【问题描述】:

我是 Unity 的新手,到目前为止,我很享受我的旅程。现在我已经完成了我的刀在 [-30;30] 度范围内的恒定旋转。然而,在用户按下任意键后,我的刀应该会朝着它当前面对的方向快速移动

如何实现以下行为?我尝试了addForce,改变速度,但没有结果......也许它甚至不可能做到?

这里我的刀面向左角,我希望它能够快速朝那个方向移动。没有花哨的效果:)

这里是刀的初始位置。

这里是源代码:

public void HandleRotation()
{
    if (transform.rotation.z >= 0.3f)
    {
        right = false;
    }
    else if (transform.rotation.z <= -0.3f)
    {
        right = true;
    }

    if (right)
    {
        begin = begin + 0.05f;
    }
    else
    {
        begin = begin - 0.05f;
    }

    var tiltAroundZ = begin * tiltAngle;
    var target = Quaternion.Euler (0, 0, tiltAroundZ);
    transform.rotation = Quaternion.Slerp(transform.rotation, target, Time.deltaTime * smooth);

}

【问题讨论】:

  • 如果你试图通过物理引擎移动它,第一个问题是它是否分配了 RigidBody 并且 isKinematic 被禁用?
  • 能给我你的刀初始状态截图吗?
  • @Ankit 我更新了我的问题
  • @ViktorVostrikov 抱歉我的回复迟了。你用transform.up 做方向了吗?
  • @ViktorVostrikov 所以现在工作正常吗?

标签: unity3d rigid-bodies


【解决方案1】:

翻译(transform.forward())?如果向前是错误的轴,您可以尝试向上或向右。

还应该有一个包含空间参数的 Translate 方法版本,在这种情况下,您将使用 Space.Self 而不是当前默认使用的 Space.World。

【讨论】:

  • 我需要沿对角线移动它。我已经用我的轮换源代码更新了这个问题。
  • transform.forward 将相对于当前变换向前移动。如果它面向对角线,它将变为对角线。
  • Roy C,现在我有另一个问题。使用变换而不是速度不会处理碰撞。这里看看transform和velocity的区别。 gamedev.stackexchange.com/questions/118711/… 请告诉我如何使用速度。
猜你喜欢
  • 1970-01-01
  • 2021-09-05
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 2014-07-11
相关资源
最近更新 更多