- ВКонтакте
- РћРТвЂВВВВВВВВнокласснРСвЂВВВВВВВВРєРСвЂВВВВВВВВ
- РњРѕР№ Р В Р’В Р РЋРЎв„ўР В Р’В Р РЋРІР‚ВВВВВВВВРЎР‚
- Viber
- Skype
- Telegram
Unity. Как отменить путь движения персонажа, если он сталкивается со стенами, платформами и т.д
Начал делать свою первую игру на Unity в 2D стиле. Столкнулся с проблемой того, что персонаж просто пролетает сквозь платформы и стены, а хотелось бы чтобы при соприкосновении персонаж просто ударялся и падал, либо же оставался на платформах. Основное управление через клик мыши. Посмотрел различный материал на данную тему, но не нашёл подходящего для себя.
[SerializeField] private float speed;
private Vector2 lastClickedPos;
bool moving;
private Rigidbody2D rb;
private void Awake()
{
rb = GetComponent<Rigidbody2D>();
}
private void Start()
{
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
lastClickedPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
moving = true;
}
if (moving && (Vector2)transform.position != lastClickedPos)
{
float _step = speed * Time.deltaTime;
transform.position = Vector2.MoveTowards(transform.position, lastClickedPos, _step);
FlyMoment();
}
else
{
moving = false;
}
}
private void FlyMoment()
{
if(moving == true)
{
rb.Sleep();
}
else
{
rb.WakeUp();
}
}