【问题标题】:Trying to move 2D object with accelerometer尝试使用加速度计移动 2D 对象
【发布时间】:2016-04-01 20:27:06
【问题描述】:

我希望能够在我的球员在空中时指挥他。所以我创建了一个名为CheckTilt() 的方法,它在FixedUpdate() 中调用,它基本上是检查平板电脑是否已沿x 方向移动。 CheckTilt() 内部的条件基于名为 isGroundedbool 变量,当玩家在空中时它基本上为假,否则该部分工作正常。但是,我无法让玩家根据加速度计移动。这是我的方法:

 public void checkTilt()
{
    if (!isGrounded)
    {

            float tiltSpeed = 10.0f;
            float x = Input.acceleration.x;
            Vector2 tilted = new Vector2(x, 0);
            myRigidBody.AddForce(tilted * tiltSpeed * Time.deltaTime);
    }

}

其他信息:我正在为 android 设备构建此功能,并已使用统一遥控器对其进行了测试。

【问题讨论】:

  • 远程根本不起作用。您需要构建到设备
  • 那我会做一个构建。如果我要在 x 方向上移动 2D 对象,那会起作用吗?
  • 好的,这就是答案——我会把它放进去以保持板子整洁。
  • 嘿...不要忘记陀螺仪功能实际上可能对您更好.. Contents/Documentation/en/ScriptReference/Gyroscope-userAcceleration.html

标签: unity3d


【解决方案1】:

幸运的是,答案只是 Unity 遥控器没有类似的功能 - 您必须构建才能尝试。

关于您的另一个问题:几乎不可能猜到“平价”。您必须尝试一下,如果不正确,只需乘以 -1f。 (我所做的是在屏幕上包含一个 UI 按钮,它可以交换奇偶校验 - 但实际上只需构建两次,直到你得到它!)


“移动时我仍然没有任何动作......”

把轴弄对是一件令人难以置信的痛苦。是的,事实上,即使是 2D 游戏,您也需要读取所有 3 轴,这是 100% 的事实。

别忘了

Apple 愚蠢地使用 Z-BACKWARDS 方向...

因为他们是从未在游戏行业工作过的彻头彻尾的白痴。

DOCO

但您几乎可以肯定必须这样做:

您熟悉使用 Canvas / UI 系统,对吧?如果不告诉我。

1) 制作一个画布并添加三个文本字段

2) 这样做

public Text showX;
public Text showY;
public Text showZ;

然后

showX.text = yourAccelerometer.x.ToString("f2");
.. same for the others ..

这似乎很痛苦,但我保证,这是弄清楚到底发生了什么的唯一方法。

【讨论】:

  • 这似乎是一个解决方案,我将构建它几次并更新线程。谢谢
  • 移动时我仍然没有任何动作。即使它是二维的,我是否需要检测 z 的加速度
  • 你摇滚 .. 伙计,你取得了好成绩吗?您还可以做一件事,例如制作自己的轴,我会得到一些示例代码。这是一项让陀螺仪/加速器工作的好生意。无论一个人多久做一次,它都是“每次都是新的”的事情之一。可能值得考虑以 10 美元购买这样的东西assetstore.unity3d.com/en/#!/content/1754
  • 见鬼!谢谢你的链接,我去看看
猜你喜欢
  • 1970-01-01
  • 2015-05-12
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多