这是一个代码问题还是Unity输入问题

问题描述 投票:0回答:1

我是个新手。

我目前正在使用一个教程来制作我的第一个小型2D平台游戏.通过使用脚本,我的角色可以左右移动。我遇到的问题是让精灵跳跃。

下面是我的代码。

using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using UnityEngine;

public class PlayerMovement : MonoBehaviour


{
    public CharacterController2D Controller;
    public float RunSpeed = 40f;
    bool Jump = false;
    float horizontalMove = 0f;

    // Update is called once per frame
    void Update()
    {
        horizontalMove = Input.GetAxisRaw("Horizontal") * RunSpeed;

        if (Input.GetButtonDown("Jump"))
        {
            UnityEngine.Debug.Log("This works");
            Jump = true;
        }

    }

    private void FixedUpdate()
    {
        Controller.Move(horizontalMove * Time.fixedDeltaTime, false, Jump);
        Jump = false;
    }
}

调试行在控制台上执行 我的代码记录了我按下的空格键 然而,屏幕上的小人却没有任何反应

希望有人能帮忙。

非常感谢。

埃利斯

c# unity3d input
1个回答
0
投票

你使用的值在 Controller.Move() 来指定跳跃的力,似乎是0。

如果你把 horizontalMove 到一个公共浮点,你可以在unity编辑器中给它赋值,也可以在脚本中赋值。

祝您好运。

EDIT:对不起,不朽是对的。你已经设置了 horizontalMove.

Input.GetAxisRaw 可以是-1,0或1。所以 horizontalMove 可以变成-40、0或40。因为你在你的控制器参数中乘以Time.deltaTime--而deltaTime通常在0.005左右--你的参数大约会变成(-)0.2。我不知道你的控制器对这个值做了什么,但我想这就是为什么你看不到任何东西的原因。这个值太小了

© www.soinside.com 2019 - 2024. All rights reserved.