- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个我以前做过的项目,但除此之外,我将使用学校免费提供的一个 Remote 。当我向上和向下移动操纵杆时,它显示相同坐标的问题。(如果你不明白我的意思,请看下图)。然后我也不确定我需要在 if 语句中放入什么,以便它检查操纵杆是向上还是向下。我也无法思考如何检查操纵杆是否没有朝任何方向移动。
我已经尝试使用 if 语句,其中如果操纵杆大于一个数字且小于另一个数字(第一个数字在操纵杆的上半部分,另一个数字意味着它在操纵杆的下半部分)操纵杆它将向下移动。当前的 if 语句没有给出任何错误,但不起作用。我尝试了一个 if 语句来检查它是否在中间,但我不太确定。
joystick_count = pygame.joystick.get_count()
if joystick_count == 0:
# No joysticks!
print("Error, I didn't find any joysticks.")
else:
# Use joystick #0 and initialize it
joystick = pygame.joystick.Joystick(0)
joystick.init()
if pygame.joystick.Joystick(0).get_axis(0) >= -0.0 and pygame.joystick.Joystick(0).get_axis(0) <= 0.0:
player_one.speed_y = 5
elif pygame.joystick.Joystick(0).get_axis(0) > -0.1 and pygame.joystick.Joystick(0).get_axis(0) < -0.9:
player_one.speed_y = -5
elif pygame.joystick(0).get_axis(0) == 0.0:
player_one.speed_y = -5
#The first if statement checks if the joystick is up and the second one
#checks if the joystick is downwards
# the middle one checks if the if statement is in the middle (not too sure)
#player one and two speed is what gets added on each time
当摇杆向下移动时, Sprite 没有移动的实际结果。
最佳答案
首先确保你有一个操纵杆,通过pygame.joystick.get_count()
获取操纵杆的数量。 .通过 pygame.joystick.Joystick.init
初始化操纵杆:
joystick = None
if pygame.joystick.get_count() > 0:
joystick = pygame.joystick.Joystick(0)
joystick.init()
一旦操纵杆被初始化,ist轴值可以通过pygame.joystick.Joystick.get_axis
获得.此函数返回的值在 [-1, 1] 范围内。 -1 表示最大负倾斜,+1 表示最大正倾斜。
请注意,游戏 handle 或操纵杆的每个模拟摇杆都有 2 个轴,一个用于水平方向,1 个用于垂直方向。由于 get_axis()
返回的值的数量取决于模拟摇杆的倾斜度,因此您应该将速度乘以该值。
此外,由于硬件的不准确性,您应该忽略死点接近 0 的值。这可以通过使用内置函数 abs(x)
的简单检查来完成。例如abs(axisval) > 0.1
:
if joystick:
axis_x, axis_y = (joystick.get_axis(0), joystick.get_axis(1))
if abs(axis_x) > 0.1:
player_one.speed_x = 5 * axis_x
if abs(axis_y) > 0.1:
player_one.speed_y = 5 * axis_y
请参阅以下简单的演示应用程序:
import pygame
pygame.init()
size = (800,600)
screen = pygame.display.set_mode(size)
clock = pygame.time.Clock()
pos = [size[0]/2, size[1]/2]
speed = 5
joystick = None
done = False
while not done:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
if event.key==pygame.K_RETURN:
done = True
if joystick:
axis_x, axis_y = (joystick.get_axis(0), joystick.get_axis(1))
if abs(axis_x) > 0.1:
pos[0] += speed * axis_x
if abs(axis_y) > 0.1:
pos[1] += speed * axis_y
else:
if pygame.joystick.get_count() > 0:
joystick = pygame.joystick.Joystick(0)
joystick.init()
print("joystick initialized")
screen.fill((0, 0, 255))
pygame.draw.rect(screen, (255,255,255), (*pos, 10, 10))
pygame.display.flip()
关于python - 如何在pygame中使用操纵杆使 Sprite 上下移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54677539/
我有一个在 SpriteKit 中创建的圆形操纵杆,我如何将较小的控制杆夹在较大的操纵杆底座内,并以编程方式防止它超出操纵杆底座。 在我的 didMove(toView:) 方法中设置操纵杆的代码。
嘿,我需要创建一个用于相机控制的操纵杆。操纵杆需要能够向左、右、上、下四个方向移动,其中两个方向具有停止功能。我在网上搜索了几个小时,终于找到了一个叫做 nipplejs 的东西。我已将 nipple
Android 3.1+ 支持操纵杆和游戏 handle ,但没有任何示例。我尝试使用 onTrackballEvent 但它没有用。如何在我的 Android 应用程序中使用操纵杆? 最佳答案 查看
每当我改变操纵杆的方向时,我都会尝试执行我的玩家 Sprite 的一些动画。 我正在使用 TheSneakyNarwhal's drop in Joystick class它使用以下方法: if (
如何在 Sphero-Android 应用程序中使用 JoystickView?我关注了this链接以便在我的布局中实现 Joystick View,但 RobotLibrary.jar 中没有名为
我正在使用 Microsoft DirectX 访问我的游戏 handle 。这是一个像这样的 USB 游戏 handle : 我可以知道何时按下按钮以及轴的模拟值... 问题是是否有办法知道何时按下
我正在开发一款带有操纵杆的 Arduino 游戏。我有 4 个 LED 灯,每 2 秒,其中 1 个会亮起。使用操纵杆时,您必须尽快使用react才能关闭 LED 灯。例如,如果左侧 LED 亮起,您
我有一个 USB 操纵杆,我想为其编写自己的 HID 驱动程序。值得注意的是,我想在 Windows 接收操纵杆输入和我的应用程序收到该输入事件通知之间插入延迟。我还想更改我的应用程序感知的操纵杆的身
在我的项目中,我使用 directinput 来管理连接到 PC 的操纵杆并且它可以工作,但是恕我直言,directimput 很难理解和完美地管理... 是否存在其他一些库/方法来以更漂亮的模式管理
我有一个便宜的 PS3 Controller 和一个 NEO-GEO X Controller 。它们都在例如上检测到。 Fedora 20 和 Lubuntu 14.04。它们出现在 lsusb 中
我一直在尝试从 USB 操纵杆读取数据(x/y 轴、按下的按钮等),而且我听说过 DirectInput。一直在寻找几个小时来找到一个像样的例子或演练但收效甚微。如果有人可以分享一个简单的教程,或者指
我想将操纵杆的两 Axis float (水平和垂直)转换为 360 度,以便在游戏中设置玩家方向。根据我的研究,我发现最好的方法是使用 Atan2。 变量: self.rot = 0 horaxis
我是一名优秀的程序员,十分优秀!