Я создал сценарий первого лица на C#, при этом мышь выглядела в отдельном скрипте. Однако в моем сценарии движения работает основная функция ходьбы, но функция спринта не работает. После изменений в сценарии, в результате чего получается довольно неэффективный, но в конечном итоге тот же скрипт, я пришел к выводу, что он просто не обнаруживает или не использует какой-либо вход из ключа спринта, который был настроен в редакторе, хотя я могу ошибаться , Сценарий:Sprint Not Working
using UnityEngine;
using System.Collections;
public class PlayerMovement : MonoBehaviour {
public float speed = 3.0F;
public float jumpSpeed = 8.0F;
public float gravity = 20.0F;
public float runSpeed = 6f;
public float crouchSpeed = 3f;
Vector3 moveDirection;
void Update() {
CharacterController controller = GetComponentInParent<CharacterController>();
if (controller.isGrounded) {
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
if (Input.GetButton("Jump")){
moveDirection.y = jumpSpeed;
}
}
moveDirection.y -= gravity * Time.deltaTime;
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D) && Input.GetButton("Sprint")){
controller.Move (moveDirection * runSpeed * Time.deltaTime);
}
else if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D)){
controller.Move (moveDirection * speed * Time.deltaTime);
}
}
}
Это может не способствовать вашей текущей проблеме, но вы можете рассмотреть вопрос о включении 'Input.GetKey (KeyCode.W) || Input.GetKey (KeyCode.S) || Input.GetKey (KeyCode.A) || Input.GetKey (KeyCode.D) 'в одном наборе скобок в условии if для спринте. – Serlite
Добавление скобок должно решить вашу проблему, Serlite правильно. –
@Atra Извините, если я не понимаю, вы имеете в виду просто 'if ((Input.GetKey (KeyCode.W) || Input.GetKey (KeyCode.S) || Input.GetKey (KeyCode.A) || Input. GetKey (KeyCode.D)) && Input.GetButton ("Sprint")) '? Я попробовал это, и это не изменило текущую ситуацию, но я чувствую, что неправильно понял решение. – Darkbyte