Различение мяча и игрока при столкновении с мячом - PullRequest
1 голос
/ 23 марта 2011

Привет, я пытаюсь сделать простую хоккейную игру.У меня есть базовая физика, работающая с полем, игроком, противником и мячом.

Я изо всех сил пытаюсь выяснить, как я могу позволить мячу двигаться в цель, сохраняя игрока и противника.от попадания в цель.

В основном противник следует за мячом, а игрок контролируется пользовательским вводом.поэтому есть два ограничения, которые мне нужны.

Мне нужно создать форму, через которую может пройти только мяч ... это вообще возможно?Может быть, я смогу уснуть противника, если мяч пройдет линию ворот?

Правильно ли я делаю это?

Игрок1 может перемещаться только в красном поле, Игрок2 может двигаться только взеленое поле Мяч может перемещаться во внешнем синем поле

playing field layout

Ответы [ 3 ]

2 голосов
/ 24 марта 2011

Если вы используете Box2D, вы, вероятно, захотите изучить Датчики .

Взято из Box2D Manual :

Иногда игровой логике нужно знать, когда два прибора перекрываются, но не должно быть реакции на столкновение. Это делается с помощью датчиков. Датчик - это прибор, который обнаруживает столкновение, но не дает ответа.

Вы можете пометить любой прибор как датчик. Датчики могут быть статическими или динамическими. Помните, что у вас может быть несколько приборов на корпус, и у вас может быть любое сочетание датчиков и прочных приборов.

Датчики не генерируют точки контакта. Есть два способа получить состояние датчика:

  1. b2Contact :: IsTouching
  2. b2ContactListener :: BeginContact и EndContact
1 голос
/ 23 марта 2011

почему вы не используете простое обнаружение столкновений?

если объект, который перемещается по вашему хоккейному полю, относится к типу игрока и его позиция / хитбокс сталкивается с целью, вы изменяете его позицию обратно на линию, поэтому он, возможно, не может пересекаться с целью.

если тип объекта не является игроком, вы просто пропускаете объект

0 голосов
/ 23 марта 2011

Ну, вы не позволяете игроку покинуть игровое поле влево или вправо?Так что вам просто нужно сделать ту же логику для области ворот для игроков.

...