首页 > 编程语言 >Python中的pygame骨骼设想

Python中的pygame骨骼设想

时间:2024-10-20 14:52:41浏览次数:17  
标签:骨骼 Python screen py pygame px blit

骨骼一般来说都是在3D建模中,动画之类里面的比较常见,pygame里面的话,我是没咋听说过用到骨骼这样的东西,所以我这里也只是一个设想。

一、核心思想

考虑有些同学可能不是很清楚骨骼,那我就以我个人的理解方法来说一下。

1.理解

这个骨骼,如其名,就看你自身好了,通俗点就是理解为:你通过大脑,控制右手抬起,但是右手是在你的右臂,然后右臂额又是在你的身体主干差不多,所以这是一个从大脑到主干,到右臂,再到右手的过程。

真正动的是骨骼,而外表上看起来是皮肤,毛发等的运动。

2.思路

所以,放在游戏里也是一样的。pygame一般来说,做横板的,2D的多一点,道理一样的,我觉得这除了3D之外2D也是通用的。但是这里的话骨骼没有具体的,只能通过坐标之间的关联来实现,其次,渲染则是在关联坐标上进行渲染,在后期运动过程中,只要调节各坐标之间的关系即可。 

除此之外,要注意的是,用于渲染的图片,不是整个被渲染物,而是要被拆分的各个部分。

二、码前准备

1.确定对象

首先我们要知道,我们要做谁的运动动画。

简单点,就比如做一个人好了。

2.基础代码

额这里就是做pygame的基础的代码,可以直接跳过这里先。

import pygame
pygame.init()
screen=pygame.display.set_mode((800,600))
pygame.display.set_caption("骨骼设想")


while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
    pygame.display.flip()

3.确定骨骼

准备好基础之后,就是考虑骨骼如何确定,如上文所说,就是通过坐标的相对。

好,那我们先来归纳一下。

以头部为第一级,身体和头发为第二级,四肢为第三级。

 那就设头部的坐标px,py,然后根据其他肢体相对于头部的位置来渲染其他肢体。

三、具体代码

import pygame
pygame.init()
screen=pygame.display.set_mode((800,600))
pygame.display.set_caption("骨骼设想")
back=pygame.image.load("back.png")
px,py=300,300
head=pygame.image.load("head.png")
hair=pygame.image.load("hair.png")
body=pygame.image.load("body.png")
Larm=pygame.image.load("Larm.png")
Rarm=pygame.image.load("Rarm.png")
Lleg=pygame.image.load("Lleg.png")
Rleg=pygame.image.load("Rleg.png")

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
    screen.blit(back,(0,0))
    screen.blit(head,(px,py))
    screen.blit(hair,(px+10,py))
    screen.blit(body,(px+20,py+70))
    screen.blit(Lleg,(px+25,py+130))
    screen.blit(Larm,(px+30,py+80))
    screen.blit(Rleg,(px+25,py+130))
    screen.blit(Rarm,(px+30,py+80))
    pygame.display.flip()

额,我画的可能确实有点草率,然后图片尺寸大小没对上,所以效果可能不是很好看,但是差不多,意思到了起码。

 那么,在上述代码中,其实真正起到骨骼控制作用的是,以下几行。

    screen.blit(head,(px,py))
    screen.blit(hair,(px+10,py))
    screen.blit(body,(px+20,py+70))
    screen.blit(Lleg,(px+25,py+130))
    screen.blit(Larm,(px+30,py+80))
    screen.blit(Rleg,(px+25,py+130))
    screen.blit(Rarm,(px+30,py+80))

四、总结

当然,这只是这个骨骼设想的开始。

骨骼设想若是发展到后面,会联系上碰撞确定一些伤害值比如说,除此之外还可以做动画?或是角色的动作动画,可能现在这个程度比较浅,能体现出的东西比较少,但是到后面毋庸置疑可以挖掘出更多东西。

 QQ技术分享交流互助群:566341887   (大家一起互帮互助,共同进步,交流分享,奔赴未来!)

标签:骨骼,Python,screen,py,pygame,px,blit
From: https://blog.csdn.net/Hoke_C/article/details/143088275

相关文章

  • ultralytics yolo 训练及推理自定义人脸关键点数据 - python 实现
            Ultralytics YOLO 是计算机视觉和ML领域专业人士的高效工具。    深度学习的关键点任务也是基础和常见任务,所以这里进行基于ultralyticsyolo自定义关键点数据集的模型训练和模型推理。    根据需求,可能会发布其webui版本,现在已经发布......
  • isicalendar.week——python中的WEEKNUM(ISO周数获取)
    Excel中的weeknum很方便,在python中却“没有”week_num,但可以有datetime.now().isocalendar().week。(笔记模板由python脚本于2024年10月18日11:38:15创建,本篇笔记适合喜欢python,爱鼓捣时间对象的coder翻阅)【学习的细节是欢悦的历程】Python官网:https://www.pyt......