Homchenkokostya
@Homchenkokostya

Почему при столкновении персонажа с препятствием происходит отскок?

Имеется блок
5a167831bdeb5391548957.png

И имеется персонаж
5a16786ac5772986423739.png

Движение персонада происходит с помощью изменения позиции Rigidbody2D

Вот весь метод Update персонажа

void Start () {
		// Rigidbody2D
		body = GetComponent<Rigidbody2D> ();
	}

void Update () {
		// Main Camera
		mainView = Camera.main;

		// Mouse Position
		var mousePosition = mainView.ScreenToWorldPoint (Input.mousePosition);
		Quaternion rotate = Quaternion.LookRotation (transform.position - mousePosition, Vector3.forward);

		// Rotation
		transform.rotation = rotate;
		transform.eulerAngles = new Vector3 (0, 0, transform.eulerAngles.z);

		// Reset Rigidbody2D
		body.velocity = Vector2.zero;
		body.angularVelocity = 0;

		// New Position
		var position = new Vector2 (transform.up.x, transform.up.y) * speed * Time.deltaTime;

		// Mouse Button Down
		if (Input.GetMouseButtonDown (0)) {
			pressed = true;
		}

		// Mouse Button Up
		if (Input.GetMouseButtonUp (0)) {
			pressed = false;
		}

		// Move Player
		if (pressed) {
			body.MovePosition (body.position + position);
		}
	}


И вот видео самой проблемы
https://youtu.be/9PEV8oIzMxk
  • Вопрос задан
  • 4285 просмотров
Решения вопроса 2
kreo_OL
@kreo_OL
Медузко -_-
Поставьте материал с нулевым трением и отскоком.
Сам отскок происходит изза наличия в стандартном материале минимального трения и отскока + особенности столкновения колайдеров, они как бы проникают друг в друга иногда
spoiler
Это особенно заметно если на небольшой коллайдер с большой высоты и с большой массой скинуть другой коллайдер - Большой просто проскочит насквозь маленький.
, при проникновение они пытаюстся выдавить друг друга - изза этого и оскок.

Уменьшить это можно поиграя со значением Дектора коллизии и в принципе значением интерполяции.
Ответ написан
MrMureno
@MrMureno Куратор тега Unity
VR for all
https://docs.unity3d.com/ScriptReference/Rigidbody...

расписано же как работает, и что в 2d более низкий лимит..у вас банально коллайдер персонажа влезает в коллайдер стены, и потом физикой выталкивается.

как они говорят или делайте движение, на небольшие расстояния.
или все же двигайте объект физический - прикладывая к нему силу, а не меняя положение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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