У меня есть 2d RPG нажмите, чтобы переместить игру. Я хочу улучшить свой код, чтобы анимация моих игроков не выглядела плохо, например, это video того, как выглядит анимация моего игрока. Как вы видите, анимация состояния бездействия игрока не самая лучшая. Видео также позволяет увидеть мой аниматор, на случай, если я допустил ошибку в моем дереве смешивания или переходах. Как я могу улучшить свой код, чтобы анимация моего плеера не была плоха, а анимация состояния бездействия моего игрока обращена к правильному направлению, с которым, как предполагается, сталкивается. Спасибо!Unity3D: Улучшение анимации игрока
private Animator anim;
public float speed = 15f;
private Vector3 target;
private bool touched;
private bool playerMovementRef;
void Start() {
target = transform.position;
anim = GetComponent<Animator>();
}
void Update() {
if (Input.GetMouseButtonDown (0)) {
Vector3 mousePosition = Input.mousePosition;
mousePosition.z = 10; // distance from the camera
target = Camera.main.ScreenToWorldPoint (mousePosition);
target.z = transform.position.z;
var movementDirection = (target - transform.position).normalized;
if (movementDirection.x != 0 || movementDirection.y != 0) {
anim.SetBool ("walking", true);
anim.SetFloat ("SpeedX", movementDirection.x);
anim.SetFloat ("SpeedY", movementDirection.y);
if (movementDirection.x < 0) {
anim.SetFloat ("LastMoveX", -1f);
} else if (movementDirection.x > 0) {
anim.SetFloat ("LastMoveX", 1f);
} else {
anim.SetFloat ("LastMoveX", 0f);
}
if (movementDirection.y > 0) {
anim.SetFloat ("LastMoveY", 1f);
} else if (movementDirection.y < 0) {
anim.SetFloat ("LastMoveY", -1f);
} else {
anim.SetFloat ("LastMoveY", 0f);
}
}
} else {
if (Mathf.Approximately (transform.position.x, target.x) && Mathf.Approximately (transform.position.y, target.y)) {
touched = false;
anim.SetBool ("walking", false);
} else {
transform.position = Vector3.MoveTowards (transform.position, target, speed * Time.deltaTime);
}
}
}
}
Чтобы быть более ясно, что я хочу сделать что-то вроде этого: http://imgur.com/j7gBeDA Но у меня возникли проблемы с моим кодом, я близко это просто не смотрит правильно, когда он идет к его простаиванию. Я проверяю, включен ли «время выхода», чего не было, поэтому я не уверен, что я делаю неправильно. Я также удостоверился, что я отлаживаю его, и он точно не дал мне ответа на то, что я искал.
Спасибо за ваш ответ, мне просто интересно, где бы я это реализовать в своем коде ??? Прости, что я больше нуб. У меня был кто-то, кто помог мне с этим раньше, но он или она не отвечал, и я ждал 4 месяца. Еще раз благодарю вас за ответ так быстро, я очень благодарен. –
Это не «подключаемо» к вашей нынешней реализации, подход неправильный, а не синтаксис/логика. Если вы не уверены, как действовать дальше, я бы предложил сначала изучить некоторые учебники Unity, а не заниматься сложными 2D-анимациями. – sloth
Благодарим вас за предложение, но было бы очень полезно, если вы сможете объяснить это более подробно. Я искал учебное пособие по единству, касающееся 2d rpg, чтобы двигаться, но я не смог найти его. спасибо –