Unity CrossPlatformInputManager无法返回正确的轴值

时间:2019-05-13 19:08:46

标签: c# unity3d

我一直遵循this tutorial series来创建2D横向滚动游戏。在PlayerController中,我将CrossPlatformController的Input交换为使用屏幕上的按钮进行移动,但是现在按下任一移动按钮都无济于事。

两者都是Canvas上名为“ Horizo​​ntal”的UIButton;向右移动的轴值为1,向左移动的轴值为-1。我设置了一个Debug.Log以在按下按钮时读取GetAxis,然后these are the results.

我想象应该显示的唯一数字是1和0,但事实并非如此。

忽略跳跃和动画制作者,这就是我对ComputeVelocity函数的要求。 “运动”与教程代码中的“运动”相同。

    protected override void ComputeVelocity()
    {

        Vector2 motion = Vector2.zero;

        motion.x = CrossPlatformInputManager.GetAxis("Horiztonal");

        if (motion.x != 0) { Debug.Log("Should be moving."); }

        Debug.Log(CrossPlatformInputManager.GetAxis("Horizontal"));

        targetVelocity = motion * maxSpeed;

    }

我猜想当我将motion.x设置为GetAxis值时,由于数字太小,它会四舍五入。我尝试通过测试GetAxis是否大于或小于零,然后将targetVelocity设置为maxSpeed(或-maxSpeed)来解决此问题,但是在这种情况下,在我释放按钮之后,播放器不会总是停止移动。

我对设置是否有问题或是否需要在变通方法中进行编码感到困惑。

0 个答案:

没有答案