白鷺の戦闘開発ノート、飛行シューティングゲーム(3)

今日は空飛ぶシューティングゲームの開発の3日目で、工場は弾丸システムを実装しています。

はじめに

プレーヤーの弾丸ベルトの多様性を実現します。

私と一緒に勉強することを皆さんに歓迎します〜以下は、詳細なプロセスコード、発生したエラー、およびそれらを修正する方法です。

効果を達成する

ここに画像の説明を挿入

コードとプロセス

フライングシューター弾丸バンドの多様性

1。より多くの種類の弾丸を作成する方法は?

ZDクラスのカテゴリインデックスIDでさまざまな箇条書きを実装する

ZDカテゴリーで適用

public id:number;		//子弹种类索引
构造
this.id = id;
switch(this.id){
case 0 :
this.im = Main.createBitmapByName("pzd2_1_png");
this.addChild(this.im);
break;
case 1:
this.im = Main.createBitmapByName("pzd2_11_png");
this.addChild(this.im);	
}

構築後、ZDManagerクラスはエラーを報告し、createメソッドにId属性を追加します

createメソッドを呼び出すときに、箇条書きのIDを追加します

フライングシューティングをプレイする際の中心的な考え方は、プレイヤーが弾丸を隠しているということです。

2つ:アニメーションフレームの箇条書き(点滅する箇条書き)

点滅は、更新中に座標が直線的に移動し、アニメーションフレームが切り替えられるためです

ループアニメーションの実装
次に、アニメーションフレームを切り替える方法:タイマーが必要で、タイマーが変更されてから、テクスチャを変更し、
2つの画像を最初にメインループの3倍、メインループの3倍に切り替え、変更のサイクルは6回です。ループ。写真3枚、1サイクル6回。等々。

update方法中
if(this.id ==2){
this.t++;
if(this.t >= 6){		//这个6是帧数*帧时长。
this.t = 0;
//图片会变,所以t在0。1,2时除以3是0.几+3取整为3,t为3,4,5时除以3为1.几+3取整为4
//这样结果就为3和4之间变化。图片名为3和4
this.im.texture = RES.getRes("pzd2_"+Math.floor(this.t/3 + 3)+"_png");
	}	
}
this.t/3 这个33次主循环变一帧,就是帧时长。

   for(let i = 0 ; i < 10 ; i++){
              this.zm.create(2,this.player.x,this.player.y,15,Math.random()*360 , this );  
           } 

Math.random()* 360、円は360度、Math.random()* 360は0から360度の間で弾丸をランダムに発射します。

3。マルチステート弾丸の実装

public m:number;        //子弹状态索引
//导弹
			case 3:
				this.im = Main.createBitmapByName("pzd1_3_png");
				this.addChild(this.im);
				this.t = 0;
				this.m = 0;
			break;
update()最开始的方法

	if(this.id == 3){
			this.im.texture = RES.getRes("pzd1_"+Math.floor(Math.random()*2 + 3)+"_png");
			switch(this.m ){
				//初始角度更新10次主循环
				case 0 :
					this.t++;
					this.x+=this.vx;
					this.y+=this.vy;
					if(this.t >=10){
						this.t =0;
						this.m =1;
					}
				break;
				//发出后停滞一段时间
				case 1:
					this.t++;
					if(this.t >=5){
						this.t =0;
						this.m =2;
						this.vy = 0;
					}
					break;
				//向上加速运动
				case 2:
					this.y+=this.vy;
					this.vy -=2;
					//这段是独立代码,所以需要检测出屏子弹消失
					if(this.y <-100)
						this.vis = false;
					break;
			}
			return;	//跳出
		}

(Math.random()* 2 + 3)(0 1)の数は3と4の間で変更されるため、* 2は(0 2の間数)+3は3〜4に丸められます

return;一部の特別なコードでは、条件が満たされ、次のコードが実行されない場合にifの後に戻ります。

4つの増加プレーヤーの起動方法

Maingameのupdateメソッドpublic update()をPlayerクラスにカットし、fireメソッドを追加します

//专用于发射子弹
	public fire(){
		this.t++;
		//每4次主循环发射一颗
		if(this.t %4 == 0){
			    this.game.zm.create(1,this.x,this.y,20,0,this.game);
		}
		if(this.t >= 15){
         this.game.zm.create(3,this.x,this.y,10,210,this.game);
		 this.game.zm.create(3,this.x,this.y,10,150,this.game);

            this.t = 0;

       }
	}

ここに画像の説明を挿入
gif画像の圧縮により、途方もない歪みが発生する可能性がありますが、実際の効果は途切れません。
これまでのところ、許してください。開発ノートの3日目は完了し、学習を継続する必要があり、最後に結果がなければなりません。毎日書き留めてくださいメモを取って学習内容を記録します。必要に応じて後で表示することもでき、誰もが一緒に勉強できます。

私は私の数に焦点を当てることができ、公開を一緒に勉強したい上海博物館無限の発見私を、学習の交換、映像素材とソースコードへのアクセス。

元の記事を4件公開 36 件を獲得 855件を表示

おすすめ

転載: blog.csdn.net/qq_39207481/article/details/105601708