Notas de desarrollo de combate Egret, juego de disparos voladores (3)

Hoy es el tercer día de desarrollo de un juego de disparos voladores, y la fábrica implementa un sistema de balas.

Introduccion

Darse cuenta de la diversidad de los cinturones de bala del jugador.

Bienvenidos a todos a estudiar conmigo ~ El siguiente es el código de proceso detallado, así como los errores encontrados y cómo corregirlos.

Lograr efecto

Inserte la descripción de la imagen aquí

Código y proceso

Flying Shooter Bullet Band Diversidad

1) ¿Cómo crear más tipos de balas?

Implemente diferentes viñetas con ID de índice de categoría en la clase ZD

Aplicar en la categoría 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);	
}

Después de la construcción, la clase ZDManager informará un error, agregue el atributo Id en el método de creación

Al llamar al método de creación, agregue la identificación de viñeta

La idea central de jugar disparos voladores es que los jugadores están escondiendo balas.

Dos: viñetas de cuadros de animación (viñetas parpadeantes)

El parpadeo se debe a que las coordenadas se mueven linealmente durante la actualización y se cambia el cuadro de animación.

Implementación de animación de bucle
Luego, cómo cambiar el cuadro de animación: necesita un temporizador, ya que el temporizador cambia, y luego cambiar la textura, cambiar de ida y vuelta
2 imágenes tres veces el bucle principal primero, tres veces el bucle principal segundo, el ciclo de un cambio es seis veces el principal Bucle 3 fotos, un ciclo es seis veces. Y así sucesivamente.

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, un círculo es 360 grados, Math.random () * 360 logra disparos aleatorios de balas entre 0 ~ 360 grados,

3) Implementación de balas multiestatales

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;	//跳出
		}

Debido a que se cambia entre 3 y 4, el número de (Math.random () * 2 + 3) (0 1) no incluye 1, entonces * 2 es (el número entre 0 2) +3 se redondea a 3 ~ 4

return; en algunos códigos especiales, devuelve después si se cumple la condición y no se ejecuta el siguiente código.

Método de lanzamiento de cuatro jugadores para aumentar

Corte el método de actualización public update () en Maingame a la clase Player y agregue el método de disparo

//专用于发射子弹
	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;

       }
	}

Inserte la descripción de la imagen aquí
Debido a la compresión de la imagen GIF, puede haber cierta distorsión entre tartamudeos, pero el efecto real no tartamudeará, perdóneme
hasta ahora, el tercer día de las notas de desarrollo se ha completado, el aprendizaje debe persistir, y debe haber resultados al final, anote todos los días Tome notas para registrar su contenido de aprendizaje, también puede verlo más tarde si lo necesita, todos pueden estudiar juntos.

Quiero aprender juntos el público puede centrarse en el número de mi Museo de Shanghai sin fin me encuentran, intercambio de conocimientos, el acceso a material de imagen y el código fuente.

Publicado 4 artículos originales · ganó 36 · vistas 855

Supongo que te gusta

Origin blog.csdn.net/qq_39207481/article/details/105601708
Recomendado
Clasificación