Плохо работающий прыжок

Программирование на Юнити.

Плохо работающий прыжок

Сообщение h1kkvl 29 авг 2022, 04:49

Работает прыжок но криво, из 15 нажатий срабатывает 1 раз. Что делать не знаю. Прошу помочь
Вот Скрипт


public class PlayerController : MonoBehaviour
{
public float walkingSpeed = 7.5f;
public float runningSpeed = 11.5f;
public float jumpSpeed = 8.0f;
public float gravity = 20.0f;
public Animator anim;
public Camera playerCamera;
public float lookSpeed = 2.0f;
public float lookXLimit = 45.0f;

CharacterController characterController;
Vector3 moveDirection = Vector3.zero;
float rotationX = 0;

[HideInInspector]
public bool canMove = true;

void Start()
{
characterController = GetComponent<CharacterController>();

Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}

void Update()
{
Vector3 forward = transform.TransformDirection(Vector3.forward);
Vector3 right = transform.TransformDirection(Vector3.right);
bool isRunning = Input.GetKey(KeyCode.LeftShift);
float curSpeedX = canMove ? (isRunning ? runningSpeed : walkingSpeed) * Input.GetAxis("Vertical") : 0;
float curSpeedY = canMove ? (isRunning ? runningSpeed : walkingSpeed) * Input.GetAxis("Horizontal") : 0;
float movementDirectionY = moveDirection.y;
moveDirection = (forward * curSpeedX) + (right * curSpeedY);

if (Input.GetButton("Jump") && characterController.isGrounded)
{
moveDirection.y = jumpSpeed;
}
else
{
moveDirection.y = movementDirectionY;
}

if (!characterController.isGrounded)
{
moveDirection.y -= gravity * Time.deltaTime;
}

characterController.Move(moveDirection * Time.deltaTime);
MoveAnimation();

if (canMove)
{
rotationX += -Input.GetAxis("Mouse Y") * lookSpeed;
rotationX = Mathf.Clamp(rotationX, -lookXLimit, lookXLimit);
playerCamera.transform.localRotation = Quaternion.Euler(rotationX, 0, 0);
transform.rotation *= Quaternion.Euler(0, Input.GetAxis("Mouse X") * lookSpeed, 0);
}
}
h1kkvl
UNец
 
Сообщения: 3
Зарегистрирован: 29 авг 2022, 04:44

Re: Плохо работающий прыжок

Сообщение Alkos26Rus 29 авг 2022, 14:14

Синтаксис:
Используется csharp
if (Input.GetButton("Jump") && characterController.isGrounded)
{
moveDirection.y = jumpSpeed;
}
else
{
moveDirection.y = movementDirectionY;
}
 

тут у тебя проблема, так как после отпускания кнопки срабатывает else и опять назначает moveDirection.y = movementDirectionY;
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2