GameMaker|Instance 實體|程式基礎

更新於 發佈於 閱讀時間約 4 分鐘

這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。有了這些概念,各位會更容易理解,要如何設計程式碼。

本篇教學所使用的系統是Windows 10,如果有按鍵相關的說明,會用Windows的系統來解釋。如果你用的是Mac系統,再麻煩自行換成相對應的按鍵。

raw-image


前置知識


在學習本篇內容之前,最好具備以下的前置知識,以免看不懂這篇教學的內容。


Instance的簡介


當GameMaker在遊戲中,生成物體時,會利用物件(Object)裡面的設定,「複製」出一個相對應的實體(Instance),接著展示在畫面中。

換句話說,我們所看到的物體,全部皆為實體,而不是物件,物件只是這些實體的「範本」而已。

也因為物件只是範本,因此實際上,我們可以利用同一個物件,生成很多個「相同功能」的實體,例如:牆壁、地板、敵人。


另外,每個實體也都會有自己的參數,包括「自訂參數」和「內建參數」。即便是相同物件的實體,他們之間也能有不一樣的數值設定。

例如:用同個物件,所產生出來的敵人,他們能有不一樣的XY座標,也能擁有不一樣的HP(生命值)。


ID


為了辨別這些實體,GameMaker會給所有實體,一個專屬的ID,只要利用這個ID,我們就能準確的,去控制我們想要操控的實體。

這組ID是GameMaker自動生成的,一般我們不會記錄這串文字,如果要使用的話,通常會把它存到「變數」裡面,再拿這個變數,來進行邏輯運算。

//這樣就能把id,存放到​inst_id裡面
inst_id = id ;

當然,也不是所有情況,都需要把這個ID,存放到變數裡面,例如:想要改變實體的座標,可以這樣子做:

//將實體的座標設定成(10,10)​
id.x = 10 ;
id.y = 10 ;


物件改變會影響實體


在幼幼班的內容裡,我們是透過「改變物件的座標」,來讓方塊產生移動的,但這個方法,只適用於「一個」方塊的情況下。

因為只要改變物件的參數,那麼,「所有」相同物件的「實體」,就會一起改變參數。

狀況就像下面的這張GIF:

所有實體會一起改變座標

所有實體會一起改變座標


上面這個範例,所使用的程式碼,是長這個樣子:

//如果滑鼠的左鍵點下
if mouse_check_button_pressed(mb_left)
{
//如果滑鼠的座標,有和obj_block碰撞(有點擊到方塊的意思)
if position_meeting( mouse_x , mouse_y , obj_block )
{
//隨機改變obj_block的XY座標
randomise() ;
block_x = irandom_range( 0 , room_width - sprite_get_width(0)) ;
block_y = irandom_range( 0 , room_height - sprite_get_height(0)) ;
obj_block.x = block_x ;
obj_block.y = block_y ;
}
}


如果,我們希望兩個實體,能夠個別偵測,各自執行改變座標的功能,那要做的事情也很簡單,我們只要把obj_block的參數,全部換成id即可。

當我們點擊紅色方塊的實體時,這個id會自動帶入,紅色方塊實體的ID,藍色方塊也是如此。

改變後的程式碼如下:

//如果滑鼠的左鍵點下
if mouse_check_button_pressed(mb_left)
{
//如果滑鼠的座標,有和實體碰撞(有點擊到方塊的意思)
if position_meeting( mouse_x , mouse_y , id )
{
//隨機改變實體的XY座標
randomise() ;
block_x = irandom_range( 0 , room_width - sprite_get_width(0) ) ;
block_y = irandom_range( 0 , room_height - sprite_get_height(0) ) ;
id.x = block_x ;
id.y = block_y ;
}
}


改良之後,方塊們就能各自點擊,而不是一起變化了:

正常的點方塊遊戲

正常的點方塊遊戲




🔔如果內容對你有幫助,可以按個喜歡,這樣就能讓更多人,接觸到這些棒棒的內容🔔


✨祝各位也能開心的做出好遊戲✨

留言
avatar-img
留言分享你的想法!
avatar-img
開心做遊戲 Happy Making Game
11會員
68內容數
免費、開心、簡單,這是我做教學的理念,我希望透過我的行動,讓人們找回自我學習的快樂,讓那些資源稀少的自學者們,也能朝著自己的夢想來前進。讓我們一起開心的做出遊戲吧!
2024/08/12
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
2024/08/12
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「repeat迴圈」,以及與「repeat迴圈」相關的知識。包括repeat迴圈的簡介、break、continue。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「repeat迴圈」,以及與「repeat迴圈」相關的知識。包括repeat迴圈的簡介、break、continue。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
看更多
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
創建物件有時是一個資源密集型和耗時的過程,尤其是當涉及到從資料庫或其他來源初始化物件時。原型模式就是為了解決這種問題🔧,它提供了一種方法,能夠通過複製一個已存在的物件來迅速創建新物件,而不是從頭開始。
Thumbnail
創建物件有時是一個資源密集型和耗時的過程,尤其是當涉及到從資料庫或其他來源初始化物件時。原型模式就是為了解決這種問題🔧,它提供了一種方法,能夠通過複製一個已存在的物件來迅速創建新物件,而不是從頭開始。
Thumbnail
前言   這篇文章將會介紹生成物件的五種多載說明和三種應用流程。 Instantiate | 生成遊戲物件   這個英文單字的中文翻譯為「實例化」,如果單純用於 GameObject 的話你可以叫他生成物件,不過 Instatiate 還有其他的功用,像是 Clone 腳本和泛型化,這個就不在我們今
Thumbnail
前言   這篇文章將會介紹生成物件的五種多載說明和三種應用流程。 Instantiate | 生成遊戲物件   這個英文單字的中文翻譯為「實例化」,如果單純用於 GameObject 的話你可以叫他生成物件,不過 Instatiate 還有其他的功用,像是 Clone 腳本和泛型化,這個就不在我們今
Thumbnail
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
Thumbnail
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
Thumbnail
這次將會介紹「圖塊設置」的部分,關於素材規格的話請看這篇基礎入門篇 2 ( 1 ) -《圖片素材規格》。
Thumbnail
這次將會介紹「圖塊設置」的部分,關於素材規格的話請看這篇基礎入門篇 2 ( 1 ) -《圖片素材規格》。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News