【问题标题】:C# - variable speed when using turning joystickC# - 使用转动操纵杆时变速
【发布时间】:2013-08-28 21:02:42
【问题描述】:

我正在使用屏幕/虚拟操纵杆制作游戏。它自己的操纵杆工作正常。

我想要的是当你转动操纵杆时,一颗子弹朝那个方向发射。我也得到了那个工作。现在,当操纵杆不在边缘/半径时射击子弹时会出现问题。

当操纵杆位于边缘/半径时,子弹以最大速度移动,这正是我想要的。但是,当操纵杆位于操纵杆半径和中心之间的某个位置时,子弹移动得更慢。由于弧度和其他东西,这是合乎逻辑的。

但这不是我想要的。应该发生的是子弹总是以最大速度移动。

有谁知道如何做到这一点?我完全陷入了困境。

谢谢!

编辑:因为我仍然不明白这一点,基本上我想要的是我在一个圆内有一个弧度点,我想得到那个点在圆边缘的位置。

假设我有这个以弧度表示的 Vector2。

    Vector2(-0.3, 0.3);

圆的半径是40。

从圆心到 Vector2 点的长度可能在附近的某个地方

    radius = 40 * 0.3 = 12

现在当长度为 40 时,Vector2 点会是什么?

我似乎无法弄清楚这一点。三角学绝对不是我的强项。

【问题讨论】:

  • 将速度钳制到最大速度,你可以通过我想像的中心点线的大小来找到这个,没有代码很难说
  • 我明白你的想法,但我现在知道该怎么做。我添加了一些信息,你能再看一下吗?
  • 量级是毕达哥拉斯 - x 平方差的平方根加上 y 平方差的平方,抱歉很难在手机上输入
  • 是的,量级不是问题。但是这个量级如何帮助我获得圆圈边缘的位置?
  • 你需要angle from the center of the circle,然后用它来确定我认为的速度

标签: c# unity3d trigonometry joystick radians


【解决方案1】:

我修好了!我只是将操纵杆的 localPosition 乘以一个非常大的数字,这样 localPosition 就会落在半径之外。然后我只使用clampMagnitude 将它放在半径的边缘。现在我得到了正确的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    相关资源
    最近更新 更多