Напиши скрипт на ходьбу в юнити
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
public float moveSpeed; // скорость перемещения персонажа
public float jumpHeight; // высота прыжка персонажа
private bool isGrounded; // проверка на нахождение на земле
Rigidbody rb;
void Start () {
rb = GetComponent<Rigidbody> ();
}
void FixedUpdate () {
float moveHorizontal = Input.GetAxisRaw ("Horizontal");
float moveVertical = Input.GetAxisRaw ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.AddForce (movement * moveSpeed);
if (Input.GetKeyDown (KeyCode.Space) && isGrounded) {
rb.AddForce (Vector3.up * jumpHeight, ForceMode.Impulse);
isGrounded = false;
}
}
void OnCollisionStay () {
isGrounded = true;
}
}
Рассмотрим подробнее, что происходит в этом скрипте.
Переменные moveSpeed и jumpHeight определяют скорость перемещения персонажа и высоту его прыжка соответственно. Кроме того, у нас есть переменная isGrounded, которая проверяет, находится ли персонаж на земле.
Далее мы инициализируем переменную Rigidbody для обработки физики персонажа. Мы используем метод GetComponent для поиска и получения компонента Rigidbody игрового объекта.
Обработчик FixedUpdate вызывается регулярно по таймеру физического движка Unity. Он считывает входные данные от игрока и перемещает персонажа. Получение значения перемещения по осям осуществляется при помощи метода GetAxisRaw класса Input (getAxis тоже подходит, но raw гарантирует, что передается всего 1 или -1, избегая разных хитрых эффектов).
Вектор движения создается из сочетания направления по оси X и Z. Затем при помощи метода addForce прилагается сила, направленная в заданном направлении (перемножение скорости и направления формирует вектор направления).
Если игрок нажимает пробел и персонаж находится на земле (то есть isGrounded == true), мы добавляем к персонажу вертикальную силу, направленную вверх (addForce, где направление это Vector3.up), используя переменную jumpHeight. Значение ForceMode.Impulse означает, что сила применяется один раз и сразу, а не постепенно.
Наконец, определяем, находится ли персонаж на земле. Если персонаж сталкивается с чем-то (коллайдерами), он считается на земле (onCollisionStay).
Это скрипт на ходьбу, который можно дополнительно настроить, например, добавив анимации или изменения скорости ходьбы в зависимости от того, бежит персонаж или идет. Этот скрипт также можно применять для других нужных действий, например, для бега или прыжков с измененными параметрами. Все зависит от сложности и типа вашей игры.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет