using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
//Velocidade do Jogador
public float speed = 6f;
//Vetor responsavel pelo movimento
Vector3 movement;
//Responsavel pela transliçao da animaçao
Animator anim;
//Responsavel pela fisica do objeto
Rigidbody playerRigidbody;
// Mascara de chao
int floorMask;
//Inf para raycast
float camRayLenght = 100f;
void Awake()
{
floorMask = LayerMask.GetMask ("Floor");
//atribuir as referencias
anim = GetComponents <Animator> ();
playerRigidbody = GetComponent <Rigidbody> ();
}
void FixedUpdate()
{
float h = Input.GetAxisRaw ("Horizontal");
float v = Input.GetAxisRaw ("Vertical");
movement (h, v);
Turning ();
Animating(h,v);
}
//movimento
void move (float h, float v)
{
//dertemina o movimento
movement.Set (h,0f,v);
//normaliza o movimento
movement = movement.normalized * speed * Time.deltaTime;
//efetua o movimento no personagem
playerRigidbody.MovePosition (transform.position + movement);
}
//girar o jogador
void Turning()
{
Ray camRay = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit floorHit;
if(Physics.Raycast(camRay,out floorHit,camRayLenght,floorMask))
{
Vector3 playerToMouse = floorHit.point - Transform.position;
playerToMouse.y = 0f;
Quaternion newRotation = Quaternion.LookRotation(playerToMouse);
playerRigidbody.MoveRotation(newRotation);
}
}
void Animating(float h, float v)
{
bool walking = h != 0f || v!=0f;
anim.SetBool ("IsWalkin", walking);
}
}