Дрожание 2D персонажа при столкновении с колайдерами, как исправить?

При соприкосновении с объектами где есть колайдер и перемещении в их сторону персонажа откидывает назад, как этого избежать?
if (Input.GetKey("w")){
			transV = playerSpeed * Time.deltaTime;
		}else if (Input.GetKey("s")){
			transV = -playerSpeed * Time.deltaTime;
		}
		//Horizontal
		if (Input.GetKey("d")){
			transH = playerSpeed * Time.deltaTime;
			if (playerLeft){
				gameObject.transform.localScale =new Vector2(-1f, 1f);
				playerLeft = !playerLeft;
			}
		}else if (Input.GetKey("a")){
			transH = -playerSpeed * Time.deltaTime;
			if (!playerLeft){
				gameObject.transform.localScale =new Vector2(1f, 1f);
				playerLeft = !playerLeft;
			}
		}
		transform.Translate(new Vector2(transH, transV));
  • Вопрос задан
  • 1984 просмотра
Решения вопроса 1
@Espleth
А что вас конкретно не устраивает? Персонажа и должно отталкивать от коллайдеров.
Но попробуйте пару вариантов:
1) Двигайте персонажа не через transform.Translate, а через rigidbody.AddForce. Подозреваю что проблема в этом: персонаж у вас проходит в коллайдер и его отталкивает из коллайдера назад.
2) Создайте для коллайдеров (в т.ч. игрока) физический материал и поставьте bounciness на 0, но судя по всему проблема решится 1ым вариантом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
TheTalion
@TheTalion
Нужно включить поле isKinematic на Rigidbody отталкиваемого объекта.
Ответ написан
Ваш ответ на вопрос

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

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