林書浩



摘 要 Unity 3D是一個可以讓玩家輕松制作各類三維視頻游戲、建筑可視化、實時三維動畫等類型互動內容的多平臺的綜合型游戲開發工具,它可以運行在Windows、Linux等多個平臺上,用它制作的游戲可以在Windows、Mac、iPhone、Android等多個平臺上運行。卡牌游戲作為當今世界上的一大主流游戲類型,無疑占據了偌大的游戲市場的半壁江山,而集換式卡牌游戲游戲因其豐富有趣的游戲性引起了人們的高度重視。本文主要講述了使用Unity 3D制作一款卡牌游戲并詳細地概述了Unity 3D的制作流程。
關鍵詞 Unity 3D;卡牌游戲;游戲制作
引言
當今社會上人們的壓力也可以說是越來越大了,人們通過工作、學習說積攢的工作壓力需要得到發泄,但是不正當的發泄手段會導致人們收到經濟、輿論甚至是法律的制裁,而這時候游戲也應運而生。
在現在人們的生存壓力已經大大減少了,人們可以更加輕松的生存下來,但是人們的心理壓力卻越來越大,心理壓力雖然平時不顯山露水,但是若是堆積過多輕則抑郁寡歡,重則會積勞成疾。所以排泄心理壓力已經成為人們不得不重視的一個行為。
1Unity引擎簡述
Unity 3D有著功能強大的編輯器,使得游戲的制作不再枯燥無味,同時它可以讓作者更加直觀地查看游戲各個元素的屬性。這就使得制作者可以更加清晰的了解游戲的結構,達成可視化的操作。最重要的是Unity 3D引擎在編輯的時候并不需要通過編寫腳本來調用需要使用到的文件,只需要托拽這些文件就可以使用這些項目工程中的文件。Unity 3D還給制作者提供了大量實用的開發工具,可以通過調用這些工具的屬性直接達成項目屬性的修改不需要在進行自定義操作,這些都可以使得開發人員在開發游戲的時候節省大量時間。
2游戲制作流程
我使用了Unity 3D引擎自帶的畫布功能,我在畫布上面添加了Sprite圖集精靈其功能主要是用于存儲與顯示圖片。
可以通過添加button控件來使某項東西可以獲得點擊效果,配合相應的代碼就可以達成點擊事件。
制作者還可以將代碼直接拖入到自定義的組件下面這樣就可以直接通過組件來使用代碼的內容。
制作者可以使用event trigger控件來實現鼠標移動的各種效果,可以通過添加新的Event Type并將需要操作的物體拖入對應的事件框中,并將對應代碼拖入其中就可以實現鼠標拖拽移動的效果了。
2.1 拖拽卡牌會移動
在前面的event trigger控件上添加Drag事件就可以通過下列代碼實現拖拽卡牌的效果。將下列代碼同樣輸入到card的類中。并將該物體拖拽到Drag事件集中選中該方法就可以實現拖拽移動的效果,具體代碼如下OnMouseDrag()方法[1]。
public void OnMouseDrag()
{
//判斷onTimeCard中與cards組件下是否有卡牌
If (Control.onTimeCard != null && Control.onTimeCard !=this.gameObject)
{
return;
}
//該卡牌位置等于鼠標位置。
transform.position = Input.mousePosition;
transform.SetParent(GameObject.Find(“TempCard”).transform);
//當該卡牌的中點位置與tx組件中點位置相差小于200時
if(Vector3.Distance(transform.position, tx.position)<200)
{
tx.gameObject.SetActive(true);
}else
{
tx.gameObject.SetActive(false);
}
}
2.2 松開鼠標會回到卡組
在前面的event trigger控件上添加Up事件就可以通過下面代碼來實現在拖拽卡牌時松開鼠標的相應效果了。同樣先將該組件拖拽到Up事件集下面,在選中card類下的該方法就可以實現松開鼠標的相應效果了[2]。
public void OnMouseUp()
{
if (Vector3.Distance(transform.position, tx.position) < 200){
transform.position = tx.position;
Control.onTimeCard = this.gameObject;
}
else{
transform.SetParent(GameObject.Find(“cards”).transform);
if (Control.onTimeCard == this.gameObject)
{
Control.onTimeCard = null;
}
}
}
2.3 刷新手牌
當游戲的下個回合開始時玩家手上的卡牌應該從新刷新。在Control類中編寫下列代碼實現控制游戲進程的效果。因為Control類已經綁定在了ScriptsControl組件上,所以只需要在next組件上添加button控件,再在上面添加新的OnClick事件直接將已經綁定Control類的ScriptsControl組件拖入到OnClick事件并選擇相應的方法就可以實現刷新手卡的效果。相應代碼如下。