pyxelの新機能を使ってみる
最近pyxelに画像の拡大縮小、回転機能が追加されました。今回は拡大縮小の部分をちょっと試してみたいと思います。
構文としては以下の形
blt(x, y, img, u, v, w, h, [colkey], [rotate], [scale])
今まで使っていた画像描画のblt関数にrotateとscaleの引数が追加されました。今回はscaleの方をいろいろといじってみます。
等倍は1.0のようなので、ここから足したり引いたりしてみます。
※ちなみにタイルマップの描画にも同様の指定ができるようです。RPGでエンカウント時に画面がぼやける(?)やつとかに使えそう。
まずは最終的にできた動きを。
メインのおばけだけではなく、壁の窓や燭台も画像としては1つで拡大率を変えることで対応しています。
コードは以下の通り。
import pyxel
class App:
def __init__(self):
#ここで起動時の処理をします
pyxel.init(160, 250, fps=20)
pyxel.load('./assets.pyxres')
self.pos1 = [70, 50]
self.scale = 1.0
pyxel.run(self.update, self.draw)
def update(self):
#ここで毎フレームの更新作業をします
#おばけを手前に
if pyxel.btn(pyxel.KEY_P):
self.scale += 0.1
self.pos1[1] += 2
#奥に
elif pyxel.btn(pyxel.KEY_O):
self.scale -= 0.1
self.pos1[1] -= 2
def draw(self):
#ここで毎フレームの描画作業をします
pyxel.cls(0)
#地面のガイドラインを描く
pyxel.line(180, 200, 95, 50, 1)
pyxel.line(-20, 200, 65, 50, 1)
for i in range(8):
pyxel.line(0+9*i, 200-20*i, 160-9*i, 200-20*i, 1)
#おばけの描画
pyxel.blt(self.pos1[0], self.pos1[1], 0, 0, 0, 16, 16, 15, None, self.scale)
#窓の描画
for i1 in range(2):
pyxel.blt(5+i1*25, 60-i1*22, 0, 32, 0, 16, 32, 15, None, 1.5-i1*0.5)
pyxel.blt(140-i1*25, 60-i1*22, 0, 32, 0, -16, 32, 15, None, 1.5-i1*0.5)
#ろうそくの描画
for i2 in range(3):
pyxel.blt(1+i2*20, 95-i2*30, 0, 16, 0, 16, 16, 15, None, 1.5-i2*0.4)
pyxel.blt(145-i2*20, 95-i2*30, 0, 16, 0, -16, 16, 15, None, 1.5-i2*0.4)
App()
Pキーでズームイン、Oキーでズームアウト。窓や燭台はforで回しながら拡大率を変化させています。
pyxresファイルは以下のものを使いました。
今回はここまで。
読んでいただきありがとうございました。
ここまで読んでいただきありがとうございます!