通过控制button移动人物
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Animator))]
public class CharacterButtonControl : MonoBehaviour
{
public Button buttonUp;
public Button buttonDown;
public Button buttonleft;
public Button buttonRight;
public GameObject player;
public Rigidbody2D rigidbody2D;
private IEnumerator moveCoroutine;
public Animator animator;
private void Awake()
{
rigidbody2D = player.GetComponent<Rigidbody2D>();
animator = this.transform.GetComponent<Animator>();
}
void Update()
{
buttonUp.onClick.AddListener(buttonUP);
buttonDown.onClick.AddListener(buttonDOWN);
buttonleft.onClick.AddListener(buttonLEFT);
buttonRight.onClick.AddListener(buttonRIGHT);
}
public void buttonUP()
{
if (moveCoroutine != null)
{
StopCoroutine(moveCoroutine);
}
animator.SetLayerWeight(1, 1);
animator.SetFloat("X", 1);
animator.SetFloat("Y", 0);
moveCoroutine = MoveCoroutine(new Vector3(0, 1f, 0), 2);
StartCoroutine(moveCoroutine);
}
public void buttonDOWN()
{
if (moveCoroutine != null)
{
StopCoroutine(moveCoroutine);
}
animator.SetLayerWeight(1, 1);
animator.SetFloat("X", -1);
animator.SetFloat("Y", 0);
moveCoroutine = MoveCoroutine(new Vector3(0, -1f, 0), 2);
StartCoroutine(moveCoroutine);
}
public void buttonLEFT()
{
if (moveCoroutine != null)
{
StopCoroutine(moveCoroutine);
}
animator.SetLayerWeight(1, 1);
animator.SetFloat("X", 0);
animator.SetFloat("Y", -1);
moveCoroutine = MoveCoroutine(new Vector3(-1f, 0, 0), 2);
StartCoroutine(moveCoroutine);
}
public void buttonRIGHT()
{
if (moveCoroutine != null)
{
StopCoroutine(moveCoroutine);
}
animator.SetLayerWeight(1, 1);
animator.SetFloat("X", 0);
animator.SetFloat("Y", 1);
moveCoroutine = MoveCoroutine(new Vector3(1f, 0, 0), 2);
StartCoroutine(moveCoroutine);
}
private IEnumerator MoveCoroutine(Vector3 newPositon, float time)
{
Vector3 startPos = rigidbody2D.transform.position;
Vector3 endPos = rigidbody2D.transform.position + newPositon;
for (float t = 0; t < time; t += Time.deltaTime)
{
rigidbody2D.transform.position = Vector3.Lerp(startPos, endPos, t / time);
yield return 0;
}
rigidbody2D.transform.position = endPos;
animator.SetLayerWeight(1, 0);
}
}
动画系统设置