python游戏引擎ppb介绍(2)精灵、场景与坐标
精灵(sprite)就是在屏幕上显示的一切事物,场景(scene)可以简单理解为屏幕,屏幕上的具体位置通过坐标来表示。
静态精灵
ppb中的精灵定义很有特色,非常简单。它可以直接对应一个外部的png文件。如果我们有这样一个图片,名字叫Target.png:
我们只需定义一个同名的类,无须任何实际的代码,即可成为一个静态精灵:
class Target(ppb.Sprite):
pass
注意精灵的默认大小是1,这个1,不是一个像素,而是一个坐标单位,详见下面场景与坐标。
动态精灵
动态精灵的定义也很简单,比如我们有下面一组图片:
blob_0
blob_1
blob_2
blob_3
blob_4
blob_5
blob_6
一共七张,依次命名为blob_0~blob_6,我们只需定义一个精灵,并指定它的图片序列如下:
class Blob(ppb.Sprite):
image = Animation("blob_{0..6}.png", 10)
其中最后一个参数10,含义是每秒10帧,它可以用来调节精灵运动的速度。
场景与坐标
我们把场景简单理解为精灵的舞台,为了显示精灵,只需把精灵加入到这个舞台上即可。
def setup(scene):
scene.add(Blob(pos=(0, -3.5)))
for x in range(-4, 5, 2):
scene.add(Target(position=ppb.Vector(x, 3)))
精灵的坐标,统一用向量(Vector)来表示。坐标的单位,不是像素,而是一个单位,这个单位的大小,由相机(camera)的设置来指定,默认状态是宽度的1/25,即屏幕的宽度为25个单位,最左边是-12.5,最右边是12.5。数字的选择大概也没有什么特别的理由,只是系统的一个默认而已。
在这段代码中我们在场景中放置了一个Blob精灵,位置(pos)定制在正中偏下的位置(0,-3.5),另外放置了5个靶子,位置分别是(-4,2)(-2,2)(0,2)(2,2)(4,2)。
代码展示了设置位置的两种方式,设置pos/postion属性,可以用一个元组,或者更明确地用一个向量(ppb.Vector)来表示。
完整代码如下:
import ppb
from ppb.features.animation import Animation
class Blob(ppb.Sprite):
image = Animation("blob_{0..6}.png", 10)
class Target(ppb.Sprite):
pass
def setup(scene):
scene.add(Blob(pos=(0, -3.5)))
for x in range(-4, 5, 2):
scene.add(Target(position=ppb.Vector(x, 3)))
ppb.run(title='小游戏',setup=setup,resolution=(1280, 768))
运行效果是这样:
本节教程到此为止,下次我们让精灵动起来。
上一篇: Unity3d