python游戏引擎ppb介绍(2)精灵、场景与坐标

精灵(sprite)就是在屏幕上显示的一切事物,场景(scene)可以简单理解为屏幕,屏幕上的具体位置通过坐标来表示。

python游戏引擎ppb介绍(2)精灵、场景与坐标_第1张图片

静态精灵

ppb中的精灵定义很有特色,非常简单。它可以直接对应一个外部的png文件。如果我们有这样一个图片,名字叫Target.png

http://p1-tt-ipv6.byteimg.com/large/pgc-image/76ccff105f9d4eafabfbe0c5575ef76b

我们只需定义一个同名的类,无须任何实际的代码,即可成为一个静态精灵:

class Target(ppb.Sprite):

    pass

 

注意精灵的默认大小是1,这个1,不是一个像素,而是一个坐标单位,详见下面场景与坐标。

动态精灵

动态精灵的定义也很简单,比如我们有下面一组图片:

http://p3-tt-ipv6.byteimg.com/large/pgc-image/a2f2d8918d4f4a6b9678cbb156b388a5

blob_0

http://p1-tt-ipv6.byteimg.com/large/pgc-image/d03c52e9285648d0800384f1384729da

blob_1

http://p26-tt.byteimg.com/large/pgc-image/f963ed65c0dd482fa6c0643061ace0a6

blob_2

http://p3-tt-ipv6.byteimg.com/large/pgc-image/377eaeaec9084b7e88449d0b74b1a26f

blob_3

http://p1-tt-ipv6.byteimg.com/large/pgc-image/7bb13d01fc634997a4e7ddd99b60d4c5

blob_4

http://p9-tt-ipv6.byteimg.com/large/pgc-image/ae333e00f6f449739a812192c26cbbde

blob_5

http://p1-tt-ipv6.byteimg.com/large/pgc-image/83d52eb51ce943f89270b205771b6f57

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))

 

运行效果是这样:

python游戏引擎ppb介绍(2)精灵、场景与坐标_第2张图片

本节教程到此为止,下次我们让精灵动起来。

 

 

你可能感兴趣的:(python游戏,python,游戏,ppb)