這期主要是想分享從完全的門外漢慢慢摸到門檻其中所學到的一些小技巧。畢竟這條路上的同好者比較少,所獲得的資源也少。世界上聰明的恩惠只會降臨於少數人身上,但身為大多數人,我們手中的武器就是努力、鍥而不捨,希望我這個開發者日誌能夠成為一個赤裸的日記,坦承地記錄一個新手的成長過程。
想像在白天被老闆電爆,案子一直被業主爆改,心中滿腔的熱情卻沒地方釋放,那美麗的設計經過無數夜晚不斷地雕琢,卻只能放在自己的倉庫裡等待有緣人,這樣的情形不知道是多少設計人心中永遠的痛。
但也不可能將每個設計都付諸實行,畢竟地球的資源有限,不管是土地、版面、展場都是限量的,那怎麼讓每個設計人都有地方可以發揮呢?世界上真的存在一片無盡的土地,可以無排他性的容納設計人無窮無盡的創意衝動嗎? 诶,還真的有,那就是網路世界,只要有台電腦,甚至最近可能只要一台平板就可以進入這美麗的烏托邦,創立屬於自己的一片天地。
如今能夠真正在網路上進行創作的人,就我的同儕來說還是少數,對於文學、建築、美術背景的人來說,此時的網路像是被玻璃罩住的烏托邦,僅提供一個被觀看的地方,而無法進入,網路從1991年發展至今,還是沒辦法像是開個門就能進入的後院,光是"程式"這樣的門檻就勸退許多設計人。
現在就我開發遊戲的這幾個月間學到的一些方法,分享給想起步的學弟妹們:
第一、自己先想辦法爬文,YT上有許多免費資源,舉例: code monkey(教c#程式)、Brackey(unity 的全方面教學,但停更了)、Eric Wang_VFX Aritst(VFX的教學)
第二、在學習的過程,時常會遇到想要的功能因為版本更新而無法運作,這時會感到十分絕望,如今的我們能夠將原本的程式碼丟入CHATGPT,請AI解釋程式的功能與語法進而發現問題、解決問題。
http://youtu.be/awPNT85Mp4o?si=0IjbldAvCYt6X6Rt
以下為舉例:
「程式範例」
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RandomTrigger : MonoBehaviour{
float CanShake = 100f;
private void Start(){
CanShake = Random.Range(10f, 20f);
}
private void FixedUpdate() {
if (EndGame.End){
return;
}
Debug.Log(CanShake);
if(CanShake <= 0f){
SceenMachineShake.Instance.ShakeCamera(3.5f, 2f);
// StartCoroutine(RandomTriggerCoroutine());
CanShake = Random.Range(10f, 20f);
}
CanShake -= Time.fixedDeltaTime;
}
// private IEnumerator RandomTriggerCoroutine(){
// yield return new WaitForSeconds(randomTime);
// Debug.Log("ShakeTime" + Time.time); //
}
}
「AI的解讀」
這段程式碼是一個在Unity中控制觸發隨機事件的腳本。我們來看一下它的功能:
- float CanShake = 100f; - 宣告一個名為CanShake的浮點數變數並設置初始值為100。
- private void Start() - Start()方法是MonoBehaviour的一個方法,在物件啟動時呼叫。在這個方法中,CanShake被設置為一個介於10到20之間的隨機值。
- private void FixedUpdate() - FixedUpdate()方法是Unity提供的用於物理運算的固定更新方法。在這個方法中,如果EndGame.End為真,則直接返回,否則打印CanShake的值。然後檢查CanShake是否小於等於0,如果是則調用SceenMachineShake.Instance.ShakeCamera(3.5f, 2f);來觸發攝像機震動效果,然後重新設置CanShake為一個介於10到20之間的隨機值。
- CanShake -= Time.fixedDeltaTime; - 在每次固定更新時,將CanShake減去固定的時間增量,這樣可以實現倒計時效果。
這段程式碼主要是用來控制在遊戲中隨機觸發攝像機震動效果的功能。
暂无关于此日志的评论。