本記事はPythonista+sceneの2Dアクションゲームを作る方法を紹介するものです。

今回は、画面タッチでキャラクターを移動させる方法について説明します。
具体的には、以下の通り。

・Pythonistaのタッチで移動させる処理の基本
・Pythonistaのタッチで移動させる処理の実装例と実行例

Pythonistaのタッチで移動させる処理の基本

タッチに使うメソッド

タッチの基本メソッド
タッチには「touch_began()」、「touch_moved()」、「touch_ended()」の3種類のメソッドがあります。

touch_began():画面をタッチした瞬間に実行
touch_moved():画面をスライドした時に処理を実行
touch_ended():画面から指を離した時に実行

メソッドの第1引数「touch」にはタッチした時の情報が格納されています。
touch.locationからはタッチした時の位置情報が取得可能です。

タッチした位置に移動

タッチした位置にキャラクターを移動させる時は「touch_began()」を使用します。

「self.player.position」直接書き換えてしまうと瞬間移動のようになってしまうので、タッチした位置を変数に格納して覚えておき、update()で徐々に移動させます。

Pythonistaでタッチした位置にキャラクターを移動

コードの記述例は以下の通り。
まずはsetup()メソッドでgame_nodeという変数を定義します。

touch_began()では位置格納変数である「move_target 」に値を設定します。
この時点ではキャラクターのpositionの値は変更しません。

update()メソッドで「move_target」に向けてキャラクターを徐々に移動させます。

同じ要領で縦方向の移動も実現可能です。

両方指定すれば縦横に移動可能です。
ただし、move_targetはXとYで用意する必要があります。

画面をスライドさせてキャラクターを移動させる

touch_moved()を使うことで画面を指でスライドした方向にキャラクターを移動させることができます。

スライドによる移動もタッチによる移動と同様、目標となる移動位置move_targetを決めて徐々に移動させます。
Pythonistaでタッチしたキャラクターを移動させる

setup()とupdate()はタッチで移動させる場合と同様です。

touch_moved()で「move_target」を指定します。

キャラクターの「frame」と「touch.location」を比較することでキャラクターをタッチした場合だけ移動できます。

Pythonista+sceneタッチ(タップ)処理まとめ

Pythonistaのタッチで移動させる処理の実装例と実行例

実装例と実行例は以下の通りです。

◆実行例
タッチが見えないのでわかりにくいですが、1つ目が「タッチした位置に移動させる方法」、2つ目が「スライドで移動する方法」の実行結果です。

以上、タッチでキャラクターを移動させる方法についてでした。

Pythonista 2Dアクションまとめ>>【Pythonista+scene】2Dアクションゲーム作成方法まとめ