I have some major issues with making a script that will trigger my character “walk” animation when moving, and switch to idle as soon as he stops. I’m using point & click kind of movement script, so it’s not about buttons being pressed.
My movement script
using UnityEngine;
using System.Collections;
public class movement : MonoBehaviour {
public RaycastHit hit;
public Ray ray;
public Vector3 direction;
public float moveSpeed = 0.1f;
public int rotateSpeed =50;
public Transform PlayerTransform;
public float curSpeed;
// Use this for initialization
void Start ()
{
PlayerTransform = transform;
direction = PlayerTransform.position;
}
// Update is called once per frame
void Update ()
{
if(Input.GetMouseButton(0))
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast (ray, out hit, 100))
{
Debug.DrawLine (ray.origin, hit.point, Color.red, 2);
Debug.Log ("Raycasted");
direction = hit.point;
Vector3 targetPoint = hit.point;
Quaternion targetRotation = Quaternion.LookRotation(targetPoint - PlayerTransform.position);
transform.rotation = Quaternion.Slerp(PlayerTransform.rotation, targetRotation, rotateSpeed * Time.deltaTime);
transform.rotation = Quaternion.Euler(0, transform.rotation.eulerAngles.y, 0);
}
}
PlayerTransform.position = Vector3.MoveTowards(PlayerTransform.position, direction, moveSpeed * Time.deltaTime);
Debug.DrawLine(PlayerTransform.position, hit.point, Color.blue, 2);
}
}