Как мне переместить мой gameObject(блок), чтобы при попадании блока в другой блок он останавливался (или, если быть более точным, попадание должно быть зарегистрировано первым)
GameEnvironment является 2d. Physcis нет.
У меня есть поле с тегом gameObject(gO), которое автоматически перемещается из точки A в точку B. Сценарий, прикрепленный к этому, имеет код ff:
transform.position = Vector3.Lerp (transform.position, targetPos, (Time.time-startTime)*0.0001f);
Примечание: это движение медленное.
Я также добавил к нему raycast2d, который в основном говорит, что если он попадет в другую коробку, он остановится в своей текущей позиции.
if(hit){
if (hit.collider.tag == "box") {
canControl = false;
canMove = false;
canSpawn();
}
} else {
canMove = true;
}
и этот, и приведенный выше код находятся в обновлении boxMovementScript.
На данный момент все хорошо, когда я убрал ящик перед другим, последний продолжает двигаться к targetPos. Когда ящик блокирует свой путь, он останавливается в своей текущей позиции.
Моя проблема возникает, когда я пытаюсь контролировать коробку, чтобы двигаться быстрее. Если перед ним находится еще одна коробка, она просто обходит коробку, и попадание никогда не регистрируется. Мой код правильного хода ниже. Это в моем пустом обновлении GameOBjectControllerScript.
if (Input.GetKeyDown(KeyCode.D) && rX !=-100){
box.transform.position = Vector3.Lerp(atom.transform.position, rightendpos, 1);
}
Правильное положение здесь - это в основном позиция vector3, которая находится на расстоянии двух блоков от ее текущей позиции.
Как мне переместить мой gameObject (ящик) так, чтобы, когда ящик попадал в другой ящик, он останавливался?
1 ответ
Вы можете попробовать две вещи:
Сначала вы можете попробовать запустить код внутри метода FixedUpdate(), так как это лучше для физики.
Во-вторых, вы можете для своего движущегося игрового объекта-куба добавить метод OnCollisionEnter2D() в прикрепленном скрипте, более подробную информацию здесь http://docs.unity3d.com/ScriptReference/Collider2D.OnCollisionEnter2D.html [На странице OnCollisionEnter есть больше примеров!] также несколько других событий столкновения, таких как OnCollision2D и т. д.
Я бы попытался использовать OnCollisionEnter2D(), чтобы остановить любое движение, и, конечно, вы можете попытаться обнаружить любые теги и т. Д. Goodluck!