くまちゃんのiOS/Androidゲームプログラミング

マイペースでゲームつくってます。

ゲームプログラミングのはなし13

【ゲームプログラミングのはなし13】
とりあえずマイキャラを動かすことができれば、ちょいとした調整に入ります。

まず、このままだと斜め移動してしまうハズ(vxとvyが同時に数値が加算される)ので、それを良しとするかどうか。

シューティングゲームならまあいいのですが、ドラクエRPGだとちょっとキモチワルイですね。4方向だけに移動を制限したい、という時は、上下左右に優先順位をつけておいて、もしvxが-1の時はvyは0、vyが1の時はvxは0、というようにどちらかに数値を代入する際にもう一方に0を放り込むようにすると、斜め移動はしなくなります。

また、このままだと画面の端に行ってもえんえん突き進んで消えてしまいますので、画面の端に来た場合にはvx、vyともに常に0にするように制限するとOKです。その時にはキャラクター自身のサイズを考慮するのを忘れないように。例えば32x32ピクセルのキャラであれば、iPhoneの右端X座標は320なので、320-32=288以上の時はvx=0にしないと画面から見切れてしまいます。

あと、これは小学生にプログラミングを教えるときのテッパンなのですが、X座標320以上の時に、マイキャラのX座標を0にすると、反対側からキャラが出てくるようになるのでウケます。X座標が0以下になる(左端から消える)時は逆にマイキャラX座標は320にします。

現実にはありえない現象なのですが、パックマンのワープゾーン、マリオブラザーズの画面端、ドラクエの船で行く海などがありますよね。

画面端は反対側にワープするようにするだけで、ゲームデザインが全く別のものに変わるので、「どっちがオモシロイかな〜」と悩みながらプログラミングするのも楽しいもんです。(続く)

https://itunes.apple.com/jp/app/doragondanku/id866740873?mt=8&uo=4&at=10l8JW&ct=hatenablog