using System;
using UnityEngine;
[RequireComponent(typeof(CharacterController))]
public class PlayerMoveTest : MonoBehaviour
{
[SerializeField] private float m_WalkSpeed;
[SerializeField] private float m_StickToGroundForce;
[SerializeField] private float m_GravityMultiplier;
[SerializeField] private float m_StepInterval;
private Vector2 m_Input;
private Vector3 m_MoveDir = Vector3.zero;
private CharacterController m_CharacterController;
private CollisionFlags m_CollisionFlags;
private void Start()
{
m_CharacterController = GetComponent<CharacterController>();
}
private void FixedUpdate()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
m_Input = new Vector2(horizontal, vertical);
Vector3 desiredMove = transform.forward * m_Input.y + transform.right *m_Input.x;
m_MoveDir.x = desiredMove.x* m_WalkSpeed;
m_MoveDir.z = desiredMove.z* m_WalkSpeed;
if (m_CharacterController.isGrounded)
{
m_MoveDir.y = -m_StickToGroundForce;
Debug.Log(" m_MoveDir.y: " + m_MoveDir.y);
}
else
{
m_MoveDir += Physics.gravity* m_GravityMultiplier * Time.fixedDeltaTime;
}
m_CollisionFlags = m_CharacterController.Move(m_MoveDir* Time.fixedDeltaTime);
}
private void OnControllerColliderHit(ControllerColliderHit hit)
{
}
}