五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

使用GameMakerStudio2制作《雪山兄弟》學(xué)習(xí)總結(jié)

2021-07-22 09:31 作者:CALL1CE  | 我要投稿


本篇為觀看up主紅色激情的教學(xué)視頻所寫的總結(jié) 視頻地址:紅激教你做游戲-GameMaker8游戲制作教程(新增番外篇)p4

導(dǎo)入資源

導(dǎo)入到GMS2,導(dǎo)入方式同《功夫》那篇相同。

新建房間,添加墻體、前景,激活視野,墻體的制作

創(chuàng)建room,載入背景圖片 在載入背景圖片前需要新建一個(gè)新的背景圖層,并設(shè)置為黑色,不然行走時(shí)會(huì)有殘影留在屏幕中 新建一個(gè)用來(lái)存墻體對(duì)象的group,新建一個(gè)父類對(duì)象obj_father,再創(chuàng)建七個(gè)繼承這個(gè)父類的墻體對(duì)象,根據(jù)精靈創(chuàng)建。 在房間中繪制地圖,并激活視野:

相機(jī)屬性Width256,Height240,Ypos160 視口屬性就寬高*4即可Width1024,Height960 *

創(chuàng)建玩家,設(shè)置基本屬性

創(chuàng)建obj_player,精靈設(shè)置為spr_player_stand 添加創(chuàng)建事件

?face=1;//方向1右 -1左
?jump=0;//跳躍0 1
?//jumpface=0;//跳躍方向-1 0 1
?state=0;//狀態(tài)0移動(dòng) 1出招 2收招
?timer=0;//狀態(tài)計(jì)時(shí)器
?hp=9;//血
?//***固有
?image_speed=0;//動(dòng)畫速度=0

玩家左右移動(dòng),坐標(biāo)限制

為obj_player添加步事件

?//***臨時(shí)變量
?var dx,psp,tmp;
?dx=0;//左右按鍵狀態(tài)
?psp=0.75;//移動(dòng)速度
?//***按鍵判斷
?if(state==0&&jump==0)
?{
? //右移動(dòng)
? if(keyboard_check(ord("D")))
? {
? ?dx=1;
? ?sprite_index=spr_player_walk;
? ?image_index+=0.25;
? ?face=1;
? }
? else//***左移動(dòng)
? if(keyboard_check(ord("A")))
? {
? ?dx=-1;
? ?sprite_index=spr_player_walk;
? ?image_index+=0.25;
? ?face=-1;
? }
? else sprite_index=spr_player_stand;
?}
?//***坐標(biāo)變化
?x+=dx*psp;
?//方向變化
?if(dx!=0)image_xscale=face;
?//***坐標(biāo)限制
?if(x<0)x=room_width;
?if(x>room_width)x=0;

下砸動(dòng)作狀態(tài)實(shí)現(xiàn)

在步事件中將下砸代碼添加到按鍵判斷代碼區(qū)塊中:

?//***下砸
? if(keyboard_check_pressed(ord("J")))
? {
? ?state=1;
? ?timer=15;//動(dòng)作持續(xù)15幀
? ?sprite_index=spr_player_chui;
? }

將敲擊判斷放在按鍵判斷代碼區(qū)塊下方:

?//***敲擊判斷
?if(state==1)
?{
? image_index+=0.2;
? //***敲擊結(jié)束
? if(timer<=0)
? {
? ?state=0;
? ?sprite_index=spr_player_stand;
? }
? //***敲擊結(jié)束
? tmp=collision_rectangle(x-12,y,x+12,y-28,obj_haishi,0,0);//需創(chuàng)建haishi對(duì)象
? if(tmp)
? if(tmp.state==0)
? {
? ? tmp.state=1;
? ? audio_play_sound(snd_chui,0,false);
? }
? timer-=1;
?}

創(chuàng)建海獅對(duì)象(obj_haishi),精靈為haishi_walk

跳躍動(dòng)作,速度限制

將跳躍代碼段加入按鍵檢測(cè)代碼塊中,并且不能和下砸同時(shí)按因此需加else,下砸代碼上面已經(jīng)加過(guò)了

? //***下砸
? if(keyboard_check_pressed(ord("J")))
? {
? ?state=1;
? ?timer=15;//動(dòng)作持續(xù)15幀
? ?sprite_index=spr_player_chui;
? }
? else//***跳躍
? if(keyboard_check_pressed(ord("K")))
? {
? ?face=dx;
? ?jump=1;
? ?direction=90;
? ?speed=4.5;
? ?gravity=0.2;
? ?audio_play_sound(snd_jump,0,false);
? ?sprite_index=spr_player_jump;
? }

在按鍵檢測(cè)區(qū)塊下面添加跳躍檢測(cè),obj_break還沒(méi)建,在后面會(huì)創(chuàng)建,如需檢測(cè)跳躍,可先創(chuàng)建個(gè)對(duì)象,先不加代碼,brk是obj_break的成員變量

?//***跳躍檢測(cè)
?if(jump==1)
?{
? x+=face*0.4;
? if(speed>8)speed=8;
? //***上跳判斷
? if(direction==90)
? {
? ?//***動(dòng)畫轉(zhuǎn)換
? ?if(speed<1)
? ?{
? ? image_index=1;
? ?}
? ?//***敲墻檢測(cè)
? ?tmp=collision_point(x,y-24,obj_wall_father,0,0);
? ?if(tmp)
? ?{
? ? //***被敲碎
? ? ?if(tmp.sprite_index!=spr_wall_wudi)
? ? ?{
? ? ?var tmp2;
? ? ?tmp2=instance_create_depth(tmp.x,tmp.y,100,obj_break);
? ? ?tmp2.sprite_index=tmp.brk;
? ? ?tmp2.face=image_xscale;
? ? ?with(tmp)instance_desttroy();
? ? ?}
? ? ?audio_play_sound(snd_ding,0,false);
? ? ?speed=0;
? ? ?image_index=1;
? ?}
? }
?}

落地判斷

在跳躍檢測(cè)代碼塊中加入下落檢測(cè)

?//***下落檢測(cè)
? if(direction==270)
? {
? ?//***跳躍中改變方向
? ?if(face==0)
? ?{
? ? if(keyboard_check(ord("A"))){face=-1;image_xscale=-1;}
? ? if(keyboard_check(ord("D"))){face=1;image_xscale=1;}
? ?}
? ?//***落地判斷
? ?tmp=collision_point(x,y,obj_wall_father,0,0);
? ?if(tmp)
? ?{
? ? jump=0;
? ? speed=0;
? ? gravity=0;
? ? y=tmp.y-1;
? ? sprite_index=spr_player_stand;
? ?}
? }

創(chuàng)建碎磚

創(chuàng)建對(duì)象obj_break,添加創(chuàng)建事件

?face=0;
?direction=90;//方向
?speed=3;
?gravity=0.2;//重力
?image_speed=0.2;//動(dòng)畫速度

添加步事件

x+=face;

添加其它事件->視野(view)->外部視野0(outside view 0)

instance_destroy(obj_break);

墻體對(duì)應(yīng)碎磚的邏輯

之后為每個(gè)可被敲碎墻體對(duì)象添加創(chuàng)建事件,添加一行相似代碼,如obj_wall_10

brk=spr_break_10;

頂磚判斷

代碼在上面跳躍檢測(cè)中已添加好

腳下為空檢測(cè)

在敲擊判斷代碼塊下方添加腳下判斷代碼塊

//***腳下判斷
if(jump==0)
{
tmp=collision_point(x,y+1,obj_wall_father,0,0);
if(!tmp)
{
jump=1;
gravity=0.2;
sprite_index=spr_player_jump;
image_index=1;
}

}

視野控制

此處我沒(méi)有按照教程視頻中的視野跟隨,第一是因?yàn)镚MS2中沒(méi)有view_yveiw這個(gè)數(shù)組了,我試了試view_yport和view_hport,但都沒(méi)有什么效果,于是我就在房間編輯器中房間屬性里的視野屬性(viewport properties)設(shè)置了跟蹤,將垂直邊界(vertical border)設(shè)了100,個(gè)人感覺效果還好,就是下落時(shí)感覺稍微有點(diǎn)快。

背景音樂(lè)

創(chuàng)建對(duì)象obj_ctrl,添加創(chuàng)建事件

audio_stop_all();
audio_play_sound(snd_music,0,true);

海獅與移動(dòng)

為obj_haishi添加創(chuàng)建事件

face=1;
state=0;
image_speed=0.2;

添加步事件,我這里和教程不太一樣,我添加了下落檢測(cè)

//***死亡
if(state==1)
{
gravity=0.2;
sprite_index=spr_haishi_dead;
exit;
}
//***自動(dòng)移動(dòng)
x+=face*0.3;
if(x<0)x=room_width;
if(x>room_width)x=0;
//***腳下判斷
if(collision_point(x-1,y+1,obj_wall_father,0,0))
{
gravity=0;
speed=0;
y=collision_point(x-1,y+1,obj_wall_father,0,0).y-1;

}
if(!collision_point(x-2,y+1,obj_wall_father,0,0)&&!collision_point(x+2,y+1,obj_wall_father,0,0))
{

gravity=0.2;
sprite_index=spr_haishi_walk;
image_index=2;
}

if(!collision_point(x-1,y+1,obj_wall_father,0,0)&&!collision_point(x+1,y+1,obj_wall_father,0,0))
{
face=-face;
}


//***改變方向
image_xscale=face;

添加Other->Outsideroom事件

instance_destroy();

打海獅與碰到海獅

打海獅在上面下砸檢測(cè)時(shí)已經(jīng)添加,接下來(lái)添加碰到海獅,在敲擊判斷下添加

else//***碰撞海獅
{
tmp=collision_rectangle(x-8,y,x+8,y-16,obj_haishi,0,0);
if(tmp)
if(tmp.state==0)
{
state=-1;
sprite_index=spr_player_dead;
image_speed=0.2;
speed=2;
gravity=0.2
direction=90;
audio_play_sound(snd_dead,0,false);
}
}


結(jié)語(yǔ)

至此,教程內(nèi)容已經(jīng)結(jié)束,視頻最后對(duì)海獅左右搖擺bug的修復(fù)在海獅與移動(dòng)的步事件中已經(jīng)修改即添加了下落檢測(cè),素材包里還有其他沒(méi)用過(guò)的精靈,將來(lái)有機(jī)會(huì)再添加8,繼續(xù)塔塔開了。






使用GameMakerStudio2制作《雪山兄弟》學(xué)習(xí)總結(jié)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
额尔古纳市| 九台市| 麻江县| 长治县| 永昌县| 沂源县| 泽库县| 增城市| 古蔺县| 宁化县| 奉贤区| 五河县| 高阳县| 邹平县| 晴隆县| 朔州市| 阜阳市| 贺兰县| 黎平县| 仲巴县| 延寿县| 长泰县| 安义县| 漳州市| 石台县| 新野县| 克拉玛依市| 永德县| 上饶县| 淅川县| 宣武区| 宾阳县| 武强县| 苍溪县| 侯马市| 常德市| 和平县| 柘城县| 汉源县| 屏边| 萝北县|