使用GamemakerStudio2制作《炸彈人》心得體會

本篇為觀看up主紅色激情的教學(xué)視頻所寫的心得體會 視頻地址:
我發(fā)現(xiàn)只是按流程總結(jié)代碼已經(jīng)沒什么意義了,反而會浪費時間,因此,之后的學(xué)習(xí)總結(jié)將變?yōu)樾牡皿w會,只會記錄一些出現(xiàn)的bug以及調(diào)制的方法,加深印象,留下足跡,方便以后記不起來的時候查看
碰撞檢測時橫向檢測&縱向檢測分開檢測
目的在于當(dāng)玩家碰到墻壁后會根據(jù)碰撞墻體與玩家坐標(biāo)值的判斷來進(jìn)行適當(dāng)?shù)幕羞_(dá)到仍然可以走而不是頂在墻上動不了。一口氣說這么長的話好累??
玩家行走時動畫不再播放,只是一個動作
我找了半天也不知道問題為甚么會出現(xiàn),最終鎖定問題是出現(xiàn)在動畫控制代碼塊,將image_index+=0.1調(diào)成image_index+=0.2后解決了不再動的問題. 后來我詢問了群友,群友告訴我建議自己寫一個變量,然后step里讓image_index=你這個變量。于是乎,將動畫控制區(qū)塊的代碼改寫為:
?//***動畫控制
?if(dx!=0||dy!=0)
?{
? image_index=image_index_player;
? if(image_index_player<4)image_index_player+=0.1;
? else image_index_player=0;
?}
其中,image_index_player在創(chuàng)建事件中初始化為0
Sunskyman告訴我加image_speed也可以正常行走
?if(dx!=0||dy!=0)
?{
? image_speed=0.1;
?}
炸彈爆炸卻炸不碎墻
原因我用來判斷爆炸檢測用的語句是if(tmp==obj_wall_brik)
其中tmp是tmp=collision_point(x+16,y,obj_wall_father,0,0);
, 這個函數(shù)返回的是碰撞到的obj_wall_father的實例ID,很顯然對象ID怎么能等于一個類呢,因此要改成紅激寫的if(tmp.sprite_index==spr_wall_brik)
加入行走音效
我開始加入行走音效是直接加在按鍵判斷里面,但是發(fā)現(xiàn)會播放很多個聲音,導(dǎo)致聲音很大而且雜亂無章,后來我想嘗試先判斷這個聲音是否在播放,如果不再播放就再播放一個相同的聲音,但我發(fā)現(xiàn)還是很難聽。最終我在控制動畫代碼區(qū)塊中,精靈動畫每過兩張圖片就播放一次,這樣好聽多了,而且和畫面同步,因為行走精靈圖片一共4張,每兩張就會踏下一步來,正好。
?if(dx!=0||dy!=0)
?{
? image_index=image_index_player;
? //image_index_player+=0.1;
? ?if((image_index_player mod 2)==0)
? {
? ?audio_play_sound(snd_step_0,0,false);
? }
? if(image_index_player<3.9)image_index_player+=0.1;
? else image_index_player=0;
?
?}
一定要是3.9,不能是4,如果是4,那么4和0都會播放一次,連續(xù)播放兩下,就有點難聽了。