2Dでゲームを作ってみる
やっぱり言語は使ってみないとなかなか身に付かないですよね。
ということで、openFrameworksを使ってブロック崩しゲームを作ってみることにします。
内容は画面下部のパッドを操作してボールを弾き、画面上部にあるブロックを崩す、というもの。
メイン画面は前回(iOSでopenFrameworks)と同じで、3Dオブジェクトをロードしていた画面を今回新たに作成します。
まずはパッドを作ります。
【PlayApp.mm】
float fltPadX;
void PlayApp::setup() {
ofSetLogLevel(OF_LOG_VERBOSE);
ofBackground(200, 200, 250);
fltPadX = (float)ofGetWidth()/2;
}
//--------------------------------------------------------------
void PlayApp::draw() {
ofSetColor(0, 0, 0);
ofRect(fltPadX , (float)ofGetHeight() - 30 , 30, 10);
}
//--------------------------------------------------------------
void PlayApp::touchDown(ofTouchEventArgs &touch){
followMousePosition();
}
//--------------------------------------------------------------
void PlayApp::touchMoved(ofTouchEventArgs &touch){
followMousePosition();
}
void PlayApp::followMousePosition(){
fltPadX = mouseX;
}
縦(Y座標)の位置は固定なので、横(X座標)のみ変更できるようにします。
複数の図形を表示する
表示は[PlayApp::draw()]で行いますが、複数の図形を使用したい場合、UnityのGameObjectのようにインスタンスを作成するということができないので(多分)以下のように書くことになります。
ofSetColor(0, 0, 0);
ofRect(0,0,10,10);
ofSetColor(10, 10, 10);
ofRect(15,15,10,10);
タップしたときにパッドを移動させる
[PlayApp::touchDown]で画面をタップした位置のX座標に移動させて、そのまま左右に動かしたときに追従するよう[PlayApp::touchMoved]に記述しています。
if文でY座標の位置が画面半分より下かどうかを見ても良さそうです。
if((float)ofGetHeight() /2 < mouseY){
fltPadX = mouseX;
}
次はボールを作ってみたいと思います。