用途別リファレンス

キャラクターを歩いているように見せる

配列を使うことでキャラクターが歩いているように見せることができる。

Main
new Chara1{x:100,y:100};

Mainは共通です。Chara1をアニメーションをさせる方法は次の二通りがあります。 一つ目は、キャラクターが動く処理と描画処理を一つのwhileの中で行います。

Chara1

//毎フレーム画像を変更すると動きが速すぎるので、ここの配列の値が4つずつ続いている //下方向を向いているときのpの値の配列 pListDown=[0,0,0,0,1,1,1,1,0,0,0,0,2,2,2,2]; //上方向を向いているときのpの値の配列 pListUp=[5,5,5,5,6,6,6,6,5,5,5,5,7,7,7,7]; //左か右方向を向いているときのpの値の配列 pListLR=[3,3,3,3,4,4,4,4];

counter=0; p=$pat_neko+0;

//状態の初期値 dir="stop";

while(true){ dir="stop"; if(getkey("down")){ y+=2;      //状態の設定 dir="down"; } if(getkey("up")){ y-=2; //状態の設定 dir="up"; } if(getkey("left")){ x-=2;

//左に向いているpの値がないので、右に向いているのをscaleXを-1にし反転させる scaleX=-1; //scaleXを変更した場合、scaleYもそれに合わせて-1に変化するので、scaleYは1に設定しておく

scaleY=1;

//状態の設定 dir="lr"; } if(getkey("right")){ scaleX=1; x+=2; //状態の設定 dir="lr"; }

if(dir=="down"){ //下方向を向いてるアニメーションの表示 p=$pat_neko+pListDown[counter%16]; }else if(dir=="up"){ //上方向を向いてるアニメーションの表示 p=$pat_neko+pListUp[counter%16]; }else if(dir=="lr"){ //左か右方向を向いてるアニメーションの表示 p=$pat_neko+pListLR[counter%8]; } counter++; update(); }

二つ目は、キャラクターが動く処理と描画処理を別々にしたい場合は

Chara1
//ここでは毎フレーム画像の変更をしていないので、配列の値を4つずつ設定する必要はない
//pの値の配列
pListDown=[0,1,0,2];
pListUp=[5,6,5,7];
pListLR=[3,4];

dir="stop"; p=$pat_neko+0;

parallel("animate"); while(true){ dir="stop"; if(getkey("down")){ y+=2; dir="down"; } if(getkey("up")){ y-=2; dir="up"; } if(getkey("left")){ x-=2; scaleX=-1; scaleY=1; dir="lr"; } if(getkey("right")){ scaleX=1; x+=2; dir="lr"; } update(); } \animate(){ counter=0; // アニメーションの処理 while(true){ if(dir=="down"){ p=$pat_neko+pListDown[counter%4]; }else if(dir=="up"){ p=$pat_neko+pListUp[counter%4]; }else if(dir=="lr"){ p=$pat_neko+pListLR[counter%2]; }else{ //p=$pat_neko+0; } counter++; //4フレームごとにupdateを行う updateEx(4); } }

下のChara1は、配列とparallelという並列処理を行うメソッドを使用しています。