假设当前位置是pos,玩家点击的点是target_pos,然后取pos和{}之间的向量。在

现在你知道了如何从pos到{},但是要以恒定速度移动(而不是一次移动整个距离),你必须规范化向量,并通过标量乘法应用速度常数。在

就这样。在

完整示例:(相关代码在Ship.update方法中)import pygame

class Ship(pygame.sprite.Sprite):

def __init__(self, speed, color):

super().__init__()

self.image = pygame.Surface((10, 10))

self.image.set_colorkey((12,34,56))

self.image.fill((12,34,56))

pygame.draw.circle(self.image, color, (5, 5), 3)

self.rect = self.image.get_rect()

self.pos = pygame.Vector2(0, 0)

self.set_target((0, 0))

self.speed = speed

def set_target(self, pos):

self.target = pygame.Vector2(pos)

def update(self):

move = self.target - self.pos

move_length = move.length()

if move_length < self.speed:

self.pos = self.target

elif move_length != 0:

move.normalize_ip()

move = move * self.speed

self.pos += move

self.rect.topleft = list(int(v) for v in self.pos)

def main():

pygame.init()

quit = False

screen = pygame.display.set_mode((300, 300))

clock = pygame.time.Clock()

group = pygame.sprite.Group(

Ship(1.5, pygame.Color('white')),

Ship(3.0, pygame.Color('orange')),

Ship(4.5, pygame.Color('dodgerblue')))

while not quit:

for event in pygame.event.get():

if event.type == pygame.QUIT:

return

if event.type == pygame.MOUSEBUTTONDOWN:

for ship in group.sprites():

ship.set_target(pygame.mouse.get_pos())

group.update()

screen.fill((20, 20, 20))

group.draw(screen)

pygame.display.flip()

clock.tick(60)

if __name__ == '__main__':

main()

python控制鼠标移动到相应的位置_让精灵一步步移动到鼠标点击位置相关推荐

  1. anaconda中python的位置_科学网—查询Anaconda安装路径、安装包位置及授予访问权限 - 张伟的博文...

    (1)确认安装路径 输入以下命令: conda info --env 可以知道当前有哪些环境,以及环境路径: (2)Anaconda管理的包的位置 具体路径为F:\Anaconda\Lib\site- ...

  2. python跳回循环开始位置_如何将程序从用户输入循环回起始位置?

    我刚刚开始使用python.我做的第一个程序是一个提示计算器,我已经做了三个版本来重写和添加更多.我想编写的下一部分代码是一个循环,它提示一个是或否问题.当"是"时,我希望程序循环 ...

  3. python的replace第i个位置_《原神》第80个绯红玉髓位置一览 第80个绯红玉髓如何获取...

    原神第80个绯红玉髓怎么得?在这个任务中需要玩家将80个绯红玉髓全部都找到,很多在寻找的过程中根据线索已经快要找全了,奈何最后一个,也就是第80个玉髓无论怎么找都无法确定其位置,这样卡主进度已经持续了 ...

  4. python控制电脑开机后进不了系统_电脑开机进不了系统原因以及解决方法

    电脑开机进系统时经常会遇到一些英文界面就进不了了,或者进系统后就蓝屏,再或者开机快进系统了就重新启动.下面装机之家分享一下电脑开机进不了系统原因以及解决方法,希望能够帮助到大家. 故障判断:电脑开机能 ...

  5. 获取位置_原神蜥蜴尾巴怎么获得 蜥蜴尾巴获取位置分享

    阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以继续免费收到最新文章了.每天都有分享.完全是免费订阅,请放心关注.注:本文转载自网络,不代表本平台立场,仅供读者参 ...

  6. android定位附近店铺,高德地图怎么添加店铺位置_高德地图定位怎么设置添加自己家店铺位置_攻略...

    高德地图是国内最知名的地图导航软件,基本上每个人的手机上都有这款软件.如今想要方便出行都可以通过高得地图查询位置就可以了,给我们的生活带来了很多的便利.在高德地图上也可以很方便的查询各个地方的店铺,通 ...

  7. 获取seekbar thumbar位置_运汽车-牡丹江到昆明汽车托运公司-查看位置

    标题鸿运广通物流是经市交通运输管理局审批的特许经营公路的公司物流公司,私家车托运运输.单台托运,多台配载,商品车交店:鸿运广通汽车运输无疑是较好的选择,在节省成本的同时.保证车辆准时安全到达..长途搬 ...

  8. 上项线体表位置_心电图导联的体表电极名称及安放位置

    关于心电图导联的体表电极名称及安放位置,相信是很多心电学主管技师考生都想知道的.医学/教育/网小编搜集并整理了相关信息,希望对大家备考复习有所帮助. 心脏是一个立体的结构,为了反应心脏不同面的电活动, ...

  9. python 控制鼠标点击需要100ms为什么_用 Python3 和 OpenCV 替我玩一玩微信小游戏 — 跳一跳 (这算外挂么)...

    0 瞎弄 我知道你们喜欢先看效果 手残的我,始终跳不过你们这些超过 50 分的大佬.想起最近在用 Python 学习 ML (Mechine Learning, 机器学习) ,怎么用没学会,倒是里面神 ...

最新文章

  1. webgl(three.js)实现室内定位,楼宇bim、实时定位三维可视化解决方案——第五课
  2. request获取各种路径 转,记下来免得 以后忘记了。
  3. SyntaxError: Non-UTF-8 code starting with ‘\xe4‘ in file解决办法
  4. Leetcode 145. 二叉树的后序遍历 (每日一题 20210930)
  5. RNN-LSTM循环神经网络-03Tensorflow进阶实现
  6. Iperf源代码分析(八)
  7. 第1次作业:阅读优秀博文谈感想
  8. mysql基础知识总结
  9. 如何让Java应用在Aone上打包速度提高100%以上
  10. sql date时间加减几天几小时
  11. 锁存器芯片74HC573芯片的用法,及其在实际电路中的应用
  12. chm文件打开文字排版错乱
  13. html 给word插入页眉和页脚,Word文档如何在任意页插入页眉和页脚
  14. ps快速去掉图中的字
  15. 程序员持续记录开始赚钱之旅 (第二十一篇)
  16. 机会是留给有准备的人的
  17. axure android尺寸,移动应用界面设计的尺寸设置及规范
  18. 关于python字符编码以下选项中错误的是_关于Python文件打开模式的描述,以下选项中错误的是...
  19. asp使用组件在线发邮件的多种方法
  20. python文件批量重命名_文件批量重命名的python代码

热门文章

  1. 用户画像之电商大数据
  2. 利用抖音Cookie充值接口提取支付链接,个人调起原生微信h5支付宝h5支付
  3. pyCharm中添加方法注释(Docstring format Live Templates)
  4. 【平行云】个人对Lark XR的理解(一)
  5. 主板诊断卡(P0ST卡)
  6. storm the 少儿英语_英文童话After the Storm
  7. 统计学习方法 -半监督学习
  8. 程序员也可以的浪漫-星空特效
  9. axure 动态面板 自动适应浏览器宽度_Axure教程:用axure制作Web原型自适应电脑屏幕...
  10. 放心脏支架后3个月后生气后出现胸闷 心脏支架后注意控制情绪