NAZYuy
@NAZYuy
Начинаю изучать Unity + C#

Как реализовать смену спрайта игрока при его взлете и падении?

В данный момент создаю игру похожую на flappy bird и хочу реализовать смену спрайта при движении персонажа вниз и вверх (ал-я анимация).
Смену спрайта произвожу с помощью данной команды:
gameObject.GetComponent<SpriteRenderer>().sprite = astronaut_2;

Возможно можно задать время в промежуток которого, будет работать данная команда, а после возвращать все обратно?
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
Если вы делаете персонажа через Rigidbody 2D, то можете использовать его velocity:
using UnityEngine;

public class FlappyBirdGraphics : MonoBehaviour {

	[SerializeField] private Rigidbody2D _rigidbody;
	[Space]
	[SerializeField] private SpriteRenderer _spriteRenderer;
	[SerializeField] private Sprite _raisingSprite;
	[SerializeField] private Sprite _fallSprite;

	private void Update() {
		if (_rigidbody.velocity.y >= 0) {
			_spriteRenderer.sprite = _raisingSprite;
		} else {
			_spriteRenderer.sprite = _fallSprite;
		}
	}
}


Вектор _rigidbody.velocity это что-то типа скорости, а свойство y (_rigidbody.velocity.y) это его вертикальная часть. Ну и дальше просто смотрите на её знак.

Можно ещё сделать через аниматор или трансформ, но через Rigidbody эту игру делать проще всего. Если захотите добавить промежуточное "начальное состояние", когда персонаж смотрит ровно, то можно взять значение 0 и близкие к нему и по такому же принципу туда вставлять соответствующую картинку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы