本記事ではPythonistaのsceneライブラリの使い方について紹介する記事です。
今回は、sceneライブラリの画像の記述方法や差し替え操作について紹介します。
目次
Pythonista+sceneライブラリの画像の基本
sceneライブラリで画像を表示したい場合は「SpriteNode()」という関数を使用します。
SpriteNode()はiPhone内の画像ファイルを使えるのはもちろんのこと、Pythonistaに付属している数多くの画像データを読み込むことができます。
また、引数で色の指定も可能であり、1つの画像でもバリエーションを増やすことが可能です。
自作の画像を使用する
ファイルのパスを指定することで自作の画像も指定することができます。
ファイルは予めプロジェクト内にインポートしておくことが必要です。
◆記述例
SpriteNode('xxxx.png')
ファイルのインポートは「+」ボタンを押して「import」からできます。
Pythonistaの画像を使用する方法と選択する方法
Pythonistaには豊富な画像が予め用意されているのでこれだけでも簡単なゲームが作成可能。
画像はいくつかのグループに別れており、グループ別にディレクトリに格納されています。
コード上では「xxxx:yyyy」のような代替文字で記述可能です。
◆記述例
SpriteNode('plf:Item_CoinBronze')
SpriteNode('emj:ghost')
◆画像の種類
主にアクションやパズル・RPGで使えそうな画像が揃っています。
ただし、RPGを作る場合は敵の画像が少し物足りないかもしれないですね。
画像の一例は以下の通り。
・キャラクター
・宇宙船
・爆発エフェクト
・トランプのカード
・バックグラウンドの背景
・コインや鍵などのアイテム
・絵文字
◆画像の選択方法
画像を一覧から選択することも可能です。
1.キーボードを開くと右側に「+」ボタンが表示されるのでこれをクリック
画像をクリックすると自動的にその画像の代替文字がコード上に自動入力されます。
個々の画像の代替文字を調べて書くのは面倒ですが、この方法であればどの画像も簡単に設定可能です。
また、画像の記述部分にカーソルを置くと絵文字が表示されるのでこれをクリックすることでも追加することができます。
画像オブジェクトのパラメータ
画像オブジェクトは以下のパラメータがあります。
◆texture
画像情報です。
代入する場合はTexture()関数で形式をsceneライブラリ用に変更する必要があります。
◆position
オブジェクトの位置情報(画面中のどこにオブジェクトを挿入するかの設定)です。
(10,50)のように座標で指定します。
positionの値を変更するとオブジェクトの移動が可能です。
update()メソッドで徐々に移動させるとより自然な移動となります。
◆anchor_point
positionが画像中のどこを指すかを指定します。
0,0(左下)から1,1(右上)で表現します。
デフォルトは画像0.5,0.5(中心)です。
なので地面がある場合はそのままだとキャラクターがめり込んでしまいます。
地面がある場合はanchor_pointを調整しましょう。
背景と地面の作成方法
背景全体の色はscene.background_colorで設定できます。
1 2 3 | def setup(self): # バックグラウンドカラーを設定 self.background_color = '#004f82' |
地面を追加する場合は64加算しながら画面の端までループさせます。
(タイルの一つの長さが64のため端までループが必要)
1 2 3 4 5 6 7 8 9 10 11 | def setup(self): ground = Node(parent=self) x = 0 # ループして画面の端まで追加する while x <= self.size.w + 64: tile = SpriteNode('plf:Ground_PlanetHalf_mid', position=(x, 0)) ground.add_child(tile) x += 64 if __name__ == '__main__': run(Game(), PORTRAIT, show_fps=True) |
SpriteNode()を活用することで背景に画像を設定することも可能です。
1 2 3 4 5 | def setup(self): back_ground = SpriteNode('IMG_0362.JPG', position=(self.size.x/2,self.size.y/2)) back_ground.size = (450, 850) back_ground.z_position = -1 self.add_child(back_ground) |
画像のサイズは画面に合った大きさで作っておきましょう。
また、背景画像は最背面に表示したいのでz_position(前後方向の位置)は最も小さい数字を指定します。上記の場合-1としましたが、他のオブジェクト(Node)よりも小さければOKです。
sceneライブラリの画像表示実装例
以下は画像を記述する場合の実装例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # coding: utf-8 from scene import * class Game (Scene): def setup(self): self.background_color = '#004f82' ground = Node(parent=self) x = 0 while x <= self.size.w + 64: tile = SpriteNode('plf:Ground_Planet', position=(x, 0)) ground.add_child(tile) x += 64 self.player = SpriteNode('emj:Ghost') self.player.anchor_point = (0.5, 0) self.player.position = (self.size.w/2, 32) self.add_child(self.player) if __name__ == '__main__': run(Game(), PORTRAIT, show_fps=True) |
終わりに:Pythonistaの画像をガンガン活用しよう
Pythonistaには最初から豊富な画像が揃っています。
トランプのカードも一式揃っているのでトランプゲームなどは簡単にできそうですね。
カラーの変更ができるので敵キャラの色を変えて動きや強さを変えてみるなどしてみると面白いと思います。
Pythonistaまとめ>>Pythonistaの使い方まとめ