скрипт
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HeroMove : MonoBehaviour
{
private Animator thisAnimator = null;
private Rigidbody thisRigidBody = null;
private int moveAnm = Animator.StringToHash("moveFlt");
public bool isRun;
public bool isHor;
public bool isGrounded;
public float jumpForce;
public float speed;
public float horizont;
private void Awake()
{
thisAnimator = GetComponent<Animator>();
thisRigidBody = GetComponent<Rigidbody>();
}
private void Update()
{
horizont = Input.GetAxis("Horizontal"); // Получение ввода горизонтальной оси и запись ее в переменую
isRun = Input.GetKey(KeyCode.LeftShift); // проверка есть ли ввод на клавишу бег
isHor = Input.GetAxis("Horizontal") > 0; // проверка есть ли ввод на горизонтальную ось
// Включение анимаций
if (!isRun & isHor)
{
thisAnimator.SetFloat(moveAnm, horizont * 0.5f, 0.1f, Time.deltaTime); // Анимация ходьбы
}
if (isRun & isHor)
{
thisAnimator.SetFloat(moveAnm, horizont, 0.1f, Time.deltaTime); // Анимация бега
}
if (!isHor & !isRun)
{
thisAnimator.SetFloat(moveAnm, 0.0001f, 0.1f, Time.deltaTime); // Анимация покоя
}
}
private void FixedUpdate()
{
MovementLogic();
JumpLogic();
}
// Логика движения
private void MovementLogic()
{
Vector3 movement = new Vector3(0.0f, 0.0f, horizont);
transform.Translate(movement * speed * Time.fixedDeltaTime);
}
// Логика прыжка
private void JumpLogic()
{
if (Input.GetAxis("Jump") > 0)
{
if (isGrounded)
{
thisRigidBody.AddForce(Vector3.up * jumpForce);
}
}
}
// Проверка "заземления" персонажа
private void IsGroundedUpate(Collision collision, bool value)
{
if (collision.gameObject.tag == ("Ground"))
{
isGrounded = value;
}
}
void OnCollisionEnter(Collision collision)
{
IsGroundedUpate(collision, true);
}
void OnCollisionExit(Collision collision)
{
IsGroundedUpate(collision, false);
}
}
using System.Collections.Generic;
using UnityEngine;
public class HeroMove : MonoBehaviour
{
private Animator thisAnimator = null;
private Rigidbody thisRigidBody = null;
private int moveAnm = Animator.StringToHash("moveFlt");
public bool isRun;
public bool isHor;
public bool isGrounded;
public float jumpForce;
public float speed;
public float horizont;
private void Awake()
{
thisAnimator = GetComponent<Animator>();
thisRigidBody = GetComponent<Rigidbody>();
}
private void Update()
{
horizont = Input.GetAxis("Horizontal"); // Получение ввода горизонтальной оси и запись ее в переменую
isRun = Input.GetKey(KeyCode.LeftShift); // проверка есть ли ввод на клавишу бег
isHor = Input.GetAxis("Horizontal") > 0; // проверка есть ли ввод на горизонтальную ось
// Включение анимаций
if (!isRun & isHor)
{
thisAnimator.SetFloat(moveAnm, horizont * 0.5f, 0.1f, Time.deltaTime); // Анимация ходьбы
}
if (isRun & isHor)
{
thisAnimator.SetFloat(moveAnm, horizont, 0.1f, Time.deltaTime); // Анимация бега
}
if (!isHor & !isRun)
{
thisAnimator.SetFloat(moveAnm, 0.0001f, 0.1f, Time.deltaTime); // Анимация покоя
}
}
private void FixedUpdate()
{
MovementLogic();
JumpLogic();
}
// Логика движения
private void MovementLogic()
{
Vector3 movement = new Vector3(0.0f, 0.0f, horizont);
transform.Translate(movement * speed * Time.fixedDeltaTime);
}
// Логика прыжка
private void JumpLogic()
{
if (Input.GetAxis("Jump") > 0)
{
if (isGrounded)
{
thisRigidBody.AddForce(Vector3.up * jumpForce);
}
}
}
// Проверка "заземления" персонажа
private void IsGroundedUpate(Collision collision, bool value)
{
if (collision.gameObject.tag == ("Ground"))
{
isGrounded = value;
}
}
void OnCollisionEnter(Collision collision)
{
IsGroundedUpate(collision, true);
}
void OnCollisionExit(Collision collision)
{
IsGroundedUpate(collision, false);
}
}