Processingでシューティングゲームを作る(その1) プレイヤーをキーボードで左右に動かせるようにする

今回はprocessingというプログラミング言語で簡単なシューティングゲームを作っていこうと思います。まずは、プレイヤーの移動の部分を作成します。なお、この記事は、プログラムの基本的な部分を端折っていますので、if文やfor文などの理解が浅い方はプログラムを読むことにきついかもしれないです。

プレイヤーという名の四角形を作成

int RECT_SIZE_WIDTH = 20; //四角形横の長さ
int RECT_SIZE_HEIGHT = 20; //四角形縦の長さ
int playerX; //プレイヤーのx座標
int playerY; //プレイヤーのy座標

void setup(){
size(400, 400);
frameRate(30);
playerX = width / 2;
playerY = height / 2;
noStroke();
fill(0,255,0);
}

void draw() {
background(0);
rect(playerX, playerY, RECT_SIZE_WIDTH, RECT_SIZE_HEIGHT);
}

とりあえず、四角形を表示しただけのプログラム。緑の四角形がプレイヤーでここから動作できるようにいじる。ここまでのプログラムを簡単に説明する。

■noStroke();

画面に描写した図形の輪郭線を表示しなくなります。

■fill(value1, value2, value3);

描写した画像の色をRBG値で設定します。value1が赤色、value2が緑色、value3が青色の色に該当します。

■rect(playerX, playerY, RECT_SIZE_WIDTH, RECT_SIZE_HEIGHT);

四角形を描写します。四角形のx座標、y座標、四角形の横の長さ、四角形の縦の長さという順番に設定します。なお、四角形のxy座標の位置は、四角形の左上の頂点になります。

キーボード入力させる

//キーボードが押された時に動作する関数
void keyPressed() {
if (key == CODED) {

//「→」ボタンを押下
if(keyCode == RIGHT) {
playerX++;
}

//「←」ボタンを押下
if(keyCode == LEFT){
playerX–;
}
}
}

ボタンを押下されたときに右方向に移動や左方向に移動させることができるプログラムを追加しました。しかし、この方法ではボタンを連打しなければ動作しないプログラムになってます。processingの場合は、ボタンを長押しするとワンテンポおいてから動作するバグ?みたいなものがありますが、プログラムの仕方としてはよろしくありません。んで、修正したプログラムを下記に記載します。

int RECT_SIZE_WIDTH = 20; //四角形横の長さ
int RECT_SIZE_HEIGHT = 20; //四角形縦の長さ
int playerX; //プレイヤーのx座標
int playerY; //プレイヤーのy座標
boolean playerMoveRight; //キーボード入力判定フラグ(右方向)
boolean playerMoveLeft; //キーボード入力判定フラグ(左方向)

void setup(){
size(400, 400);
frameRate(30);

//初期値代入
playerX = width / 2;
playerY = height / 2;
playerMoveRight = false;
playerMoveLeft = false;

noStroke();
fill(0,255,0);
}

void draw() {
background(0);

// 四角形を描写する
rect(playerX, playerY, RECT_SIZE_WIDTH, RECT_SIZE_HEIGHT);

// キーボードの入力処理
if(playerMoveRight) {
playerX++;

// 画面外へ行かないようにする
if(playerX >= width – RECT_SIZE_WIDTH) {
playerX = width – RECT_SIZE_WIDTH;
}

}

if(playerMoveLeft){
playerX–;

// 画面外へ行かないようにする
if(playerX <= 0) {
playerX = 0;
}

}
}

//キーボードが押された時に動作する関数
void keyPressed() {
if (key == CODED) {

//「→」ボタンを押下
if(keyCode == RIGHT) {
playerMoveRight = true;
}

//「←」ボタンを押下
if(keyCode == LEFT){
playerMoveLeft = true;
}

}
}

//キーから離れたときに動作する関数
void keyReleased(){
if (key == CODED) {

//「→」ボタンを離す
if(keyCode == RIGHT) {
playerMoveRight = false;
}

//「←」ボタンを離す
if(keyCode == LEFT){
playerMoveLeft = false;
}

}
}

修正した箇所を赤色の線を引いておきました。ボタンが押されたらフラグがtureになり、ボタンを離したらfalseになるという仕様です。ボタンを押している間は四角形を左右に動かすことができます。ずっと右方向(左方向も同じ)へ動かし続けると画面外へ出てしまうバグが発生するため、画面外に出ないような処理も追加。もちろん、プログラムを修正すれば上下にも動かすことも可能です。

最後に

簡単にプレイヤーを動かすプログラムを紹介しましたがいかがだったでしょうか。今回は四角形をプレイヤーとして作成しましたが、四角形をキャラクターの画像に変えれば、キャラクターが動かすことも可能です。プログラムをいじって作成してみてはいかがでしょうか?

コメント

タイトルとURLをコピーしました