- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人能告诉我要改变什么,以便我的船使用推力力学而不是像现在这样的静态运动吗?
我希望运动就像在小行星中一样,它在你面对的方向上加速并且速度在某个点停止,然后如果你停止加速,它的速度会慢慢降低直到停止。
rn如果我按下前进按钮,它就会直接以最大速度开始移动,并在我松开时立即停止。
这是我的船类的代码
class Ship:
def __init__(self, x, y):
self.x = x
self.y = y
self.width = 0
self.vel = 0
self.angle = 0
def draw(self):
ship_img = pygame.image.load("sprites/ship_off.png")
ship_img_copy = pygame.transform.rotate(ship_img, self.angle)
window.blit(ship_img_copy,
(self.x - (ship_img_copy.get_width()) / 2, self.y - (ship_img_copy.get_height()) / 2))
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
ship_img = pygame.image.load("sprites/ship_on.png")
ship_img_copy = pygame.transform.rotate(ship_img, self.angle)
window.blit(ship_img_copy,
(self.x - (ship_img_copy.get_width()) / 2, self.y - (ship_img_copy.get_height()) / 2))
def move(self):
keys = pygame.key.get_pressed()
# todo acceleration and thrust mechanics
if keys[pygame.K_w]:
self.x += self.vel * cos(self.angle * (pi / 180) + (90 * pi / 180))
self.y -= self.vel * sin(self.angle * (pi / 180) + 90 * (pi / 180))
# So that if it leaves one side it comes from the other
if self.y < 0:
self.y = (self.y - self.vel) % 600
elif self.y > 600:
self.y = (self.y + self.vel) % 600
elif self.x < 0:
self.x = (self.x - self.vel) % 800
elif self.x > 800:
self.x = (self.x + self.vel) % 800
if keys[pygame.K_a]:
self.angle += 7
if keys[pygame.K_d]:
self.angle -= 7
我试过了,但我做不到,所以这是我的代码
最佳答案
你要改self.vel
当按下 w 或 s 时,但您必须更改 self.x
和 self.y
在每一帧中,依赖于 self.vel
:
class Ship:
def __init__(self, x, y):
# [...]
self.vel = 0
self.max_vel = 10
# [...]
def move(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
self.vel = min(self.vel+1, self.max_vel)
if keys[pygame.K_s]:
self.vel = max(self.vel-1, 0)
if keys[pygame.K_a]:
self.angle += 7
if keys[pygame.K_d]:
self.angle -= 7
self.x += self.vel * cos(self.angle * (pi / 180) + (90 * pi / 180))
self.y -= self.vel * sin(self.angle * (pi / 180) + 90 * (pi / 180))
if self.y < 0:
self.y = (self.y - self.vel) % 600
elif self.y > 600:
self.y = (self.y + self.vel) % 600
elif self.x < 0:
self.x = (self.x - self.vel) % 800
elif self.x > 800:
self.x = (self.x + self.vel) % 800
关于python - 我如何让我的角色加速和减速,而不仅仅是以一定的速度移动(在 pygame 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63245963/
我正在用 C++ 编写一个粒子模拟器。 我通过在每个时间步将它们的速度添加到它们的位置来移动粒子。 时间步的值是当前帧的百分比。所以全帧时间步长为1,半帧时间步长为0.5,四分之一帧时间步长为0.25
Linux下“减速”查看日志的方法 需求场景 今天查看日志,有个需求,需要按照指定“速率”输出日志信息到终端屏幕上,方便查看。 这个需求日常应该也经常会碰到,比如以下两种情况:
有没有办法取消 UIScrollView 的减速? 我想允许用户滚动 Canvas ,但我不希望用户抬起手指后 Canvas 继续滚动。 最佳答案 这可以通过利用 UIScrollView 委托(de
我在我的 c 应用程序中遇到大量 sqlite 减速问题,并且 不知道这是意料之中还是我没有正确使用 sqlite。 数据库使用滚动日志,如 http://dt.deviantart.com/jour
有没有办法取消 UIScrollView 的减速? 我想允许用户滚动 Canvas ,但我不希望用户抬起手指后 Canvas 继续滚动。 最佳答案 这可以通过利用 UIScrollView 委托(de
我有一个可以用手指拖动的 UIView,这是我使用 UIPanGestureRecognizer 实现的。这允许我水平拖动 View ;向左或向右。 我在从 UIPanGestureRecognize
我正在向 Redis 中插入大量文本以逐行存储频率。但是,jedis/redis 会变慢,并且在执行一定数量的操作后需要花费大量时间e 操作并且程序以错误结束:java.lang.OutOfMemor
我有一个 UIPanGestureRecognize,我用它来更改 View 的框架。当手势状态为 UIGestureRecognizerStateEnded 时,有没有办法模拟 UIScrollVi
我正在尝试在 MKMapView 上捕获平移和“滚动结束”。使用手势识别器可以轻松实现平移。然而,MKMapView 似乎没有在 iOS 6 中实现 UIScrollViewDelegate。这使得解
我正在尝试学习如何实现多处理来计算蒙特卡洛模拟。我从 this simple tutorial 复制了代码目的是计算积分。我还将它与 answer from WolframAlpha 进行了比较并计算
基本上破坏我的 node js express 服务器的代码是这样的: resultArr = []; resultArr["test"] = []; resultArr["test"][201507
我有一个服务,每秒向 S3 发送 10k PUT 请求。 S3 能够在几分钟内处理这些负载,但在那之后开始抛出 SlowDown 异常。它使我的服务速度减慢到无法接受的速度。 我已阅读 this并实现
SO上有足够多的类似问题和答案。然而很少提到前缀。 首先,不再需要前缀的随机化,参见 here This S3 request rate performance increase removes an
我正在创建以下画廊: gallery 我相信 prettyPhoto.css 在悬停时应用了边框颜色,但我似乎无法使用 Dom Inspector 找到它。 谁能帮我找到 css 来编辑鼠标悬停时的边
我有一个基于 paste.httpserver 的网络服务器作为 HTTP 和 WSGI 之间的适配器。当我使用 httperf 进行性能测量时,如果每次使用 --num-conn 启动一个新请求,我
我是一名优秀的程序员,十分优秀!