如何计算一个形状是否在pyglet中的另一个形状之下
How to calculate if a shape is under another in pyglet
我正在使用 pyglet 制作一个无尽的跑步者。
我正在尝试确定玩家下方地板的高度。每一层都是class:
class Floor():
def __init__(self, width, height, offset, batch=None):
self.width = width
self.height = height
self.floor = shapes.Rectangle(offset, 0, self.width, self.height, color=(9, 197, 0), batch=batch)
def move(self, amount):
self.floor.x -= amount
所以我在class中添加了一个方法来计算地板是否在玩家下方(玩家也是一个形状):
def under_player(self, player):
if player.x <= self.floor.x and self.floor.x + self.width >= player.x:
return True
return False
现在为了计算玩家所在的地板高度,我做了这个函数(地板是 Floor
classes 的列表):
def calc_under_floor():
global floors, player
for floor in floors:
if floor.under_player(player):
return floor.height
return -100
问题是 under_player
中检查玩家是否在这层楼下的条件是错误的。我找不到可行的解决方案。有什么办法可以解决这个问题吗?
希望我找到了解决方案。至少它有效:)
def under_player(self, player):
if player.x + 50 >= self.floor.x and player.x <= self.floor.x + self.floor.width:
return True
return False
我正在使用 pyglet 制作一个无尽的跑步者。
我正在尝试确定玩家下方地板的高度。每一层都是class:
class Floor():
def __init__(self, width, height, offset, batch=None):
self.width = width
self.height = height
self.floor = shapes.Rectangle(offset, 0, self.width, self.height, color=(9, 197, 0), batch=batch)
def move(self, amount):
self.floor.x -= amount
所以我在class中添加了一个方法来计算地板是否在玩家下方(玩家也是一个形状):
def under_player(self, player):
if player.x <= self.floor.x and self.floor.x + self.width >= player.x:
return True
return False
现在为了计算玩家所在的地板高度,我做了这个函数(地板是 Floor
classes 的列表):
def calc_under_floor():
global floors, player
for floor in floors:
if floor.under_player(player):
return floor.height
return -100
问题是 under_player
中检查玩家是否在这层楼下的条件是错误的。我找不到可行的解决方案。有什么办法可以解决这个问题吗?
希望我找到了解决方案。至少它有效:)
def under_player(self, player):
if player.x + 50 >= self.floor.x and player.x <= self.floor.x + self.floor.width:
return True
return False