2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ゲーム制作5日目!×5

Posted at

#今日のメニュー

・外壁設置

#壁
壁を描いて、衝突判定するところまでやります。
壁はSurfaceというクラスを使って書いてみようと思います。
参考:Surface を使ってCanvas描画してみよう

surfaceではキャンバスを作って、そこに長方形などを書けるようです。
このsurfaceで作成したものは、画像として、
Spriteに登録することができます。
とりあえず今回は厚さ16pxの壁を四面に設置します。

ソースコードは以下の感じ。
壁は配列を使用することにしました。
位置についてはベタ書きをしているので、
あまり頭が良くないような気がします。

			//水平の壁
			var wallHolSurface=new Surface(WIDTH,16);
			wallHolSurface.context.fillStyle="black";
			wallHolSurface.context.fillRect(0,0,WIDTH,16);
			
			//垂直の壁
			var wallVerSurface=new Surface(16,HEIGHT);
			wallVerSurface.context.fillStyle="black";
			wallVerSurface.context.fillRect(0,0,16,HEIGHT);
			
			var wall=[new Sprite(WIDTH,16),new Sprite(16,HEIGHT),new Sprite(WIDTH,16),new Sprite(16,HEIGHT)];
			//surfaceをセット
			for(var i=0;i<4;i++){
				if(i%2==0){
					wall[i].image=wallHolSurface;
				}else{
					wall[i].image=wallVerSurface;
				}
				scene.addChild(wall[i]);
			}

			//位置
			wall[0].x=0;
			wall[0].y=0;

			wall[1].x=WIDTH-16;
			wall[1].y=0;

			wall[2].x=0;
			wall[2].y=HEIGHT-16;

			wall[3].x=0;
			wall[3].y=0;

#衝突判定
壁の衝突判定にはintersect関数を使用します。
これは、壁は長方形の形であるため、
中心点との座標を測るwithin関数では、
正しい判定を行うことができないからです。

貼るほどではないかもしれませんが、衝突判定部分は以下の感じ。

						//壁
						for(var i=0;i<4;i++){
							if(this.intersect(wall[i])){
								game.replaceScene(createGameOverScene());
							}
						}

#今日の成果

今日の成果に飛びます。
全面青画面がスタート画面です。
画面をクリックすると、ゲームがスタートします。
ゲーム中では左右キーで曲がることができます。
とまることはできません。
下ボタンで増殖します。
自分の体および壁に衝突すると、全面緑色のゲームオーバー画面に飛びます。
ゲームオーバー画面で画面をクリックするとスタート画面に戻ります。

#問題点

どこか計算式が間違っているようで、
曲がっていると体がだんだんずれていく気がします。
どうにかしないと…。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?