我正在 Python Arcade 中构建一个游戏,它将让 NEAT AI 贯穿整个关卡。我试图找到一种方法让玩家的多个实例同时运行但不会发生碰撞。有没有办法做到这一点?碰撞类型似乎只是在碰撞发生后处理,而不是阻止它们。我需要它们能够与地板和物品发生碰撞,而不会与其他“玩家”发生碰撞。
问问题
46 次
1 回答
1
您可以创建两个 SpriteList:一个 forplayers
和一个 foritems
然后检查players
vsitems
而不是 between的冲突players
。
例子:
import arcade
class Collision(arcade.Window):
def __init__(self):
super().__init__(600, 200, 'Collision!')
self.text = ''
self.players = arcade.SpriteList()
self.player1 = arcade.Sprite(':resources:images/animated_characters/male_person/malePerson_idle.png', center_x=50, center_y=100)
player2 = arcade.Sprite(':resources:images/animated_characters/female_person/femalePerson_idle.png', center_x=200, center_y=100)
self.players.extend([player2, self.player1])
self.items = arcade.SpriteList()
item = arcade.Sprite(':resources:images/items/star.png', center_x=400, center_y=90)
self.items.append(item)
def on_draw(self):
arcade.start_render()
self.items.draw()
self.players.draw()
arcade.draw_text(self.text, 250, 160, arcade.color.RED, 24)
def update(self, delta_time: float):
self.player1.center_x += 2
if arcade.check_for_collision_with_list(self.player1, self.items):
self.text = 'Collide!'
else:
self.text = ''
Collision()
arcade.run()
输出:
于 2021-04-14T01:25:13.577 回答