Unity 中使用 LeftShift 进行玩家冲刺

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

我的项目是第一人称跳跃和奔跑,我希望我的玩家通过按水平或垂直组合 Shift 来冲刺。

我已经创建了一个新的输入,称为 Sprint,带有负按钮“左移”

我的玩家可以正常移动,但他不会冲刺。

非常感谢。

public class PlayerMovement : MonoBehaviour
{

public CharacterController controller;

public float speed = 12f;
public float sprint;

public float gravity = -9.81f;
public float jumpHeight = 3f;

public Transform groundCheck;
public float groundDistance = 0.4f;
public LayerMask groundMask;

Vector3 velocity;
bool isGrounded;

// Update is called once per frame
void Update()
{

     

    


    isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

    if(isGrounded && velocity.y < 0) {

        velocity.y = -2f;

    }

    float x = Input.GetAxis("Horizontal");
    float z = Input.GetAxis("Vertical");

    Vector3 move = transform.right * x + transform.forward * z;

    controller.Move(move * speed * Time.deltaTime);

    if (Input.GetButtonDown("Jump") && isGrounded)
    {

        velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);

    }

    velocity.y += gravity * Time.deltaTime;

    controller.Move(velocity * Time.deltaTime);

    // Noch nicht fertig -> Noch ausstehend
    if (Input.GetButtonDown("Horizontal") && Input.GetButtonDown("Sprint") || Input.GetButtonDown("Vertical") && Input.GetButtonDown("Sprint"))
    {
        controller.Move(move * (speed + sprint) * Time.deltaTime);

    }
}
unity-game-engine move shift
1个回答
1
投票

输入的处理方式很可能存在问题。 我的假设是,当您按下 Shift 时,GetButtonDown 仅对单帧返回 true。使用 GetKey 代替:

Input.GetKey(KeyCode.LeftShift)

如果这不起作用,请尝试这 2 个:

Input.GetKeyDown("left shift")

Input.GetKeyDown(KeyCode.LeftShift)

但是这两个可能与“GetButtonDown”有同样的问题。

另外,我认为如果您使用英语注释而不是德语注释,会帮助人们更好地理解您的代码。我能读懂它,但很可能读不懂。不过不用担心,这也发生在我身上!

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