こんばんは。
特にネタもないので、ドラクエ的にぞろぞろと歩くパーティーを実装してみましょう。
まず準備段階として、向きを保存しておく必要があります。Characterクラスに整数型のdirectionを宣言し、上、下、左、右をそれぞれ3、0、1、2としておきましょう。いつか、話しかける時に何らかの方向の「逆」がすぐに計算できるよう、正反対の方向が足して3になるよう調整しておきます(微々たるものですが…)。
後は、Character配列のpartyと、現在のパーティーの人数をあらわすpartylengthさえあれば、以下の処理(Aとします)
for(int i = partylength-1; i > 0 ; i--){
if(!(party[i-1].x == party[i].x && party[i-1].y == party[i].y)){
if(party[i-1].direction == 2)
party[i].x+=14;
else if(party[i-1].direction == 1)
party[i].x-=14;
else if(party[i-1].direction == 0)
party[i].y+=14;
else
party[i].y-=14;
party[i].direction = party[i-1].direction;
}
}
を移動が発生した時に呼び出せば、後をテクテクついて歩くパーティーの完成です。本当は1マス28ピクセルでやっているのですが、半マスずつの移動をアニメーションするために14という値になっています。
アニメーションを完成させるには、次のループにて以下の処理Bを実行すればいいです。
if(moving){
//さっき動いたばっかり。という訳で描画位置とか調整
for(int i = 0; i < partylength; i++){
if(party[i].x%28!=0){
if(party[i].direction == 2)
party[i].x+=14;
else
party[i].x-=14;
}
if(party[i].y%28!=0){
if(party[i].direction == 0)
party[i].y+=14;
else
party[i].y-=14;
}
}
ただし、必ず気をつけなければいけない点がいくつかありますので、明日にでも説明したいと思います。