2015-10-02 2 views
0

Я использую Unity, и я делаю игру в понг. Я хотел бы иметь возможность перемещать весла с помощью мыши. Я попытался просто переместить свое положение, но это, конечно, просто «телепортирует» их через коллайдеров вдоль края игрового поля. Я попытался использовать addForce() и сделать жесткое тело фиксированным в положении x, однако, что происходит, когда мяч попадает в весло, он толкает его, и весло защелкивается назад. Вся энергия шара теряется (в моей игре есть сила тяжести). Как я могу переместить этот коллайдер с ящиком, но не позволять ему переходить на другие коллайдеры коробки во время движения? Благодаря!!!Как перемещать объект без прохождения коллайдеров

+1

Мы не собираемся писать ваш код для вас ..., пожалуйста, отправьте код – AndreL

ответ

0

Ваш весло должен быть кинематическим (IsKinematic параметр) жестким корпусом (прилагается RigidBody2D), в то время как края должны быть просто статическим коллайдером. Но вы должны контролировать пределы/края перемещения весла в вашем скрипте.

Если вы так поступаете, ваш шар, естественно, скачет по краям и от вашего весла. Однако, если вы хотите, чтобы мяч проходил по краям, но уведомил вас об этом (например, потерять условие), вы должны сделать края статическим триггерным коллайдером (параметр IsTrigger).

Вот подробный список всех взаимодействий между различными типами коллайдеров: http://docs.unity3d.com/Manual/CollidersOverview.html. Сгенерированные сообщения передаются через две различные функции: OnTriggerEnter2D и OnCollisionEnter2D.