Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法禁用碰撞?_Python_Python 3.x_Arcade - Fatal编程技术网

Python 有没有办法禁用碰撞?

Python 有没有办法禁用碰撞?,python,python-3.x,arcade,Python,Python 3.x,Arcade,我正在Python Arcade中构建一个游戏,该游戏将在关卡中运行一个整洁的AI。我试图找到一种方法,让玩家的多个实例同时运行,但不会发生碰撞。有办法做到这一点吗?碰撞类型似乎只是在碰撞发生时处理碰撞,而不是防止碰撞。我需要它们能够与地板和物品发生碰撞,而不会与其他“玩家”发生碰撞。您可以创建两个精灵列表:一个用于玩家,一个用于物品,然后检查玩家与物品之间的碰撞,而不是玩家之间的碰撞 例如: import arcade class Collision(arcade.Window):

我正在Python Arcade中构建一个游戏,该游戏将在关卡中运行一个整洁的AI。我试图找到一种方法,让玩家的多个实例同时运行,但不会发生碰撞。有办法做到这一点吗?碰撞类型似乎只是在碰撞发生时处理碰撞,而不是防止碰撞。我需要它们能够与地板和物品发生碰撞,而不会与其他“玩家”发生碰撞。

您可以创建两个精灵列表:一个用于
玩家
,一个用于
物品
,然后检查
玩家
物品
之间的碰撞,而不是
玩家
之间的碰撞

例如:

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()
输出: