如何让我的随机移动对象在pygame中以特定角度移动
Posted
技术标签:
【中文标题】如何让我的随机移动对象在pygame中以特定角度移动【英文标题】:How can i make my randomly moving object move in a specific angle in pygame 【发布时间】:2021-04-28 13:07:01 【问题描述】:Full Code
self.VEL = 3
self.RAND = numpy.linspace(-self.VEL, +self.VEL, 100) # calculating value between -2 and 2, a total of 100 values
-----------------------------------------
if self.new_line:
self.deltax = random.choice(self.RAND)
self.deltay = random.choice(self.RAND)
self.new_line = False
self.move(self.deltax, self.deltay)
-----------------------------------------
def move(self, deltax, deltay):
self.x += deltax
self.y += deltay
我目前正在使用 pygame 在 python 中构建一个蚂蚁模拟器。蚂蚁从中间开始,然后从那里随机移动。运动是这样进行的。每隔几毫秒将self.new_line
设置为True。然后计算出一个新的self.deltax
和self.deltay
。现在,只要 self.new_line
为 False,我的 ant 每次迭代都会随着 self.x += deltax
和 self.y += deltay
移动。当self.new_line
再次为True 时,ant 将使用self.deltax
和self.deltay
的新值开始一个新行。 deltax 和 deltay 的值介于 -2 和 +2 之间,这意味着蚂蚁可以在各个角度移动。
Visualization
问题:
-
但是我希望我的蚂蚁只以特定的角度移动。 Like This
我该怎么做?
如果你用 on ant 运行程序,你会看到 ant 的速度随着换行而改变。如何让我的蚂蚁有一个一致的速度?
我怎样才能让我的蚂蚁以特定的角度反弹墙壁?
感谢您的帮助。
【问题讨论】:
【参考方案1】:这是多个问题。目的是只问一个问题。我只会回答其中的 2 个。
使用pygame.math.Vector2
和rotate()
生成指定范围内长度和角度恒定的方向向量:
if self.new_line:
angle = random.randint(-45, 45)
direction_vector = pygame.math.Vector2(0, -self.VEL).rotate(angle)
self.deltax = direction_vector.x
self.deltay = direction_vector.y
【讨论】:
以上是关于如何让我的随机移动对象在pygame中以特定角度移动的主要内容,如果未能解决你的问题,请参考以下文章