Синтаксис:
Используется csharp
using UnityEngine;
public class CharacterMovement : MonoBehaviour
{
public float walkSpeed;
public float runSpeed;
bool locomotion;
float moveSpeed;
float gravityForce;
float vertical;
float horizontal;
float forward;
Vector3 moveVector;
Vector3 direct;
Animator animator;
CharacterController controller;
private void Start()
{
animator = GetComponent<Animator>();
controller = GetComponent<CharacterController>();
moveSpeed = walkSpeed;
locomotion = true;
}
private void FixedUpdate()
{
GamingGravity();
Move();
Animate();
}
private void Move()
{
moveVector.x = Input.GetAxis("Horizontal") * moveSpeed;
moveVector.z = Input.GetAxis("Vertical") * moveSpeed;
if (controller.isGrounded)
{
if (Input.GetKey(KeyCode.LeftShift) && (moveVector.x != 0 || moveVector.z != 0)) moveSpeed = runSpeed;
else moveSpeed = walkSpeed;
if (Vector3.Angle(Vector3.forward, moveVector) > 1f || Vector3.Angle(Vector3.forward, moveVector) == 0)
{
direct = Vector3.RotateTowards(transform.forward, moveVector, moveSpeed, 0.0f);
transform.rotation = Quaternion.LookRotation(direct);
}
}
moveVector.y = gravityForce;
controller.Move(moveVector * Time.deltaTime);
print(gravityForce);
}
void Animate()
{
if (controller.isGrounded)
{
horizontal = Input.GetAxis("Horizontal") * moveSpeed;
vertical = Input.GetAxis("Vertical") * moveSpeed;
forward = Mathf.Clamp01(Mathf.Abs(vertical) + Mathf.Abs(horizontal));
if (locomotion)
{
animator.SetFloat("forward", forward, 0.20f, Time.deltaTime);
if (Input.GetKey(KeyCode.LeftShift) && (moveVector.x != 0 || moveVector.z != 0)) animator.SetBool("run", true);
else animator.SetBool("run", false);
}
}
}
void GamingGravity()
{
if (!controller.isGrounded) gravityForce -= 20f * Time.deltaTime;
else gravityForce = -1;
}
}
public class CharacterMovement : MonoBehaviour
{
public float walkSpeed;
public float runSpeed;
bool locomotion;
float moveSpeed;
float gravityForce;
float vertical;
float horizontal;
float forward;
Vector3 moveVector;
Vector3 direct;
Animator animator;
CharacterController controller;
private void Start()
{
animator = GetComponent<Animator>();
controller = GetComponent<CharacterController>();
moveSpeed = walkSpeed;
locomotion = true;
}
private void FixedUpdate()
{
GamingGravity();
Move();
Animate();
}
private void Move()
{
moveVector.x = Input.GetAxis("Horizontal") * moveSpeed;
moveVector.z = Input.GetAxis("Vertical") * moveSpeed;
if (controller.isGrounded)
{
if (Input.GetKey(KeyCode.LeftShift) && (moveVector.x != 0 || moveVector.z != 0)) moveSpeed = runSpeed;
else moveSpeed = walkSpeed;
if (Vector3.Angle(Vector3.forward, moveVector) > 1f || Vector3.Angle(Vector3.forward, moveVector) == 0)
{
direct = Vector3.RotateTowards(transform.forward, moveVector, moveSpeed, 0.0f);
transform.rotation = Quaternion.LookRotation(direct);
}
}
moveVector.y = gravityForce;
controller.Move(moveVector * Time.deltaTime);
print(gravityForce);
}
void Animate()
{
if (controller.isGrounded)
{
horizontal = Input.GetAxis("Horizontal") * moveSpeed;
vertical = Input.GetAxis("Vertical") * moveSpeed;
forward = Mathf.Clamp01(Mathf.Abs(vertical) + Mathf.Abs(horizontal));
if (locomotion)
{
animator.SetFloat("forward", forward, 0.20f, Time.deltaTime);
if (Input.GetKey(KeyCode.LeftShift) && (moveVector.x != 0 || moveVector.z != 0)) animator.SetBool("run", true);
else animator.SetBool("run", false);
}
}
}
void GamingGravity()
{
if (!controller.isGrounded) gravityForce -= 20f * Time.deltaTime;
else gravityForce = -1;
}
}