序
骨骼一般来说都是在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