Как сделать усовершенствованное обнаружение столкновений? [дублировать]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать усовершенствованное обнаружение столкновений? [дублировать]

Сообщение Anonymous »

Как я могу выполнить надлежащие столкновения в плитку? В настоящее время мой код проверяет, только если вы касаетесь плитки, и отменяет свою гравитацию, устанавливая вас в заземленном режиме. Я не уверен, как разрешить правильные столкновения плитки (сенсорные стены, и вы перестаете двигаться, прикоснитесь к потолкам, а ваша скоростная отмена и гравитационные удары). Более того, как я могу сделать логику петли? Обычно вы должны иметь возможность проходить по левой стороне петли, столкнуться с правой стороной, цикл на полпути, а затем иметь возможность столкнуться с левой частью, завершить петлю и фаза через правую сторону. < /P>
Любая справка хорошо ценится.

Код: Выделить всё

        for tile in self.tile_group:
# Skip non-collideable tiles and monkey bars for regular collision
if not getattr(tile, "collideable", True) or getattr(tile, "is_monkey_bar", False):
continue

if self.sonic.mask.overlap(tile.mask, (tile.rect.x - self.sonic.hitbox.x, tile.rect.y - self.sonic.hitbox.y)):
if getattr(tile, "loop_left_wall", False) and self.sonic.contact_mode == FLOOR:
self.sonic.angle = 0  # Sonic phases through left loop walls while on the floor
if getattr(tile, "loop_floor", False) and self.sonic.contact_mode in [LEFT_WALL, RIGHT_WALL]:
continue  # Sonic phases through loop floors while on the walls

# Sonic collides with the tile
self.sonic.Yvel = 0
self.sonic.grounded = True
self.sonic.jumped = False
self.sonic.angle = tile.angle
break  # Stop checking after the first collision

Я попытался использовать прямые для получения tile.rect.left и tile.rect.right, но я хочу вместо этого использовать маску.

Подробнее здесь: https://stackoverflow.com/questions/795 ... -detection
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»