Unity - 動態Copy GameObject上的Component以及Component上面設定的value到另一個物件上
使用Unity內建的MonoBehaviour來製作script很方便,建立一個新的繼承MonoBehaviour的class,這個物件就可以做為component放到場景的物件上,除了配置到物件上之外,這個類別裡面的public參數也會顯示在Unity的inspector中調整,在調整一些參數上很方便不需要動到code。
Labels:
Unity3D
北方之塔13
因為這個遊戲的背景其實是從MUD來的,可以說這是個粉絲取向的遊戲,原本就打算參考原始MUD的故事架構,也許在製作上並不會完完全全採用原本的設定,但是還是有許多可以使用在遊戲中的東西。
稍微把之前蒐集的資料整理了一下,大概把MUD遊戲中的歷史編成一個簡單的表,其實表中有很多的素材可以使用,例如地圖場景地點,但是我目前也沒辦法做這麼多事情,因此遊戲最主要的目的只放在一個元素上,也就是歷史上冒險者第一次發現北方之塔的時候。
稍微把之前蒐集的資料整理了一下,大概把MUD遊戲中的歷史編成一個簡單的表,其實表中有很多的素材可以使用,例如地圖場景地點,但是我目前也沒辦法做這麼多事情,因此遊戲最主要的目的只放在一個元素上,也就是歷史上冒險者第一次發現北方之塔的時候。
Labels:
NorthTower
Unity - 製作2D拋物線(Parabola)物件2 - 假的模擬阻力
說明
接續著前一篇完美拋物線(http://www.iverv.com/2014/08/unity-2dparabola1.html),那接著就是要做有受到阻力的效果,但是這邊為什麼叫做假的呢,因為這邊用的方法不全然是照著公式來做,但是在概念上是接近的,同時也可以達到類似受到阻力移動的效果。
但是跟前一篇不同的是,前一篇是利用公式,以X座標去求Y座標位置,來得到拋物線段上各點的座標位置,用這個座標位置來設定球的座標。這次使用的方式是以向量的方式來移動,概念就是行進中的點,以當下移動的向量調整阻力後,乘上一個frame的時間求得下一個位置。
接續著前一篇完美拋物線(http://www.iverv.com/2014/08/unity-2dparabola1.html),那接著就是要做有受到阻力的效果,但是這邊為什麼叫做假的呢,因為這邊用的方法不全然是照著公式來做,但是在概念上是接近的,同時也可以達到類似受到阻力移動的效果。
但是跟前一篇不同的是,前一篇是利用公式,以X座標去求Y座標位置,來得到拋物線段上各點的座標位置,用這個座標位置來設定球的座標。這次使用的方式是以向量的方式來移動,概念就是行進中的點,以當下移動的向量調整阻力後,乘上一個frame的時間求得下一個位置。
Labels:
Unity3D
福島FGJ - Fukushima & Faust Game Jam 2014
2014的福島Game Jam在前陣子結束啦,這種快速製作一個Prototype的過程,其實滿不容易的,但是多虧了許多好用的引擎工具,讓製作上變得輕鬆許多,雖然說輕鬆,但是實在製作上還是覺得時間不夠啦。
本組的基本資料:台北場G組<STREAK>,Wiki頁面
http://157.7.235.138/dokuwiki/doku.php?id=team:taipeiiii_g
本組的基本資料:台北場G組<STREAK>,Wiki頁面
http://157.7.235.138/dokuwiki/doku.php?id=team:taipeiiii_g
Labels:
Scrap
Unity - 製作電流效果2 - Mesh
除了使用Unity內建的LineRenderer來製作電流效果之外(製作電流效果1-LineRenderer),還可以使用自己建立Mesh線段來取代LineRenderer製作電流效果,明顯的好處就是線段不一定要連續,以及多個線段Draw call不會增加,但是因為是用Mesh製作,所以當線段的數量越多,雖然Draw Call不變但是面數卻會大量增加,所以在使用上還是要斟酌,同時如果有美術可以製作這些效果的圖,也就可以不必用這麼多Mesh線段來模擬電流效果。
Labels:
Unity3D
Unity - 使用ScreenToWorldPoint的時候,回傳值是camera的position而不是目標點座標的問題
在使用Camera.main.ScreenToWorldPoint(Input.mousePosition))的時候,有時候會發現取得的是Camera的座標而不是滑鼠的座標。
自己做的參考圖。
因為事實上是需要提供Z參數的
Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Z));
Z代表的是Depth,因此如果Z=0的話就會是Camera的transform position了,因為此時nearClip趨近於Camera,不論你畫面中哪個點都會趨近於Camera的position
Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Z));
Z代表的是Depth,因此如果Z=0的話就會是Camera的transform position了,因為此時nearClip趨近於Camera,不論你畫面中哪個點都會趨近於Camera的position
Labels:
Unity3D
Unity - 取得Android手機中的圖檔來做為材質
一般來說如果遊戲要使用Resources資料夾的東西,用Unity提供的API像是Resources.Load就可以了,如果在編輯器底下也可以用Resources.LoadAssetAtPath()之類的方法,這邊使用的是另一種取得外部檔案的方式,也就是讓Unity呼叫在Plugin裡面預先製作好的方法,在Android手機中去取得外部檔案並回傳給Unity,然後在Unity執行中即時使用這個檔案建立材質。
Labels:
Unity3D
Unity編輯器版本2048 !
不知道你玩過最近很流行的2048了沒有?如果還沒有的話建議可以先到2048的官方頁面去玩看看(http://gabrielecirulli.github.io/2048/),有鑑於最近2048很夯,於是參考了原著,我就把它修改成在Unity編輯器下也可以玩的版本啦。不過沒有做得很仔細,不知道會不會有Bug就是了。
Vertex and fragment shader 13 - 2D過場淡入淡出(Fade in/out) - 螺旋型(Spiral)
最近剛好看到關於螺旋的文章,覺得是個滿有趣的效果,就試著來修改成為一個螺旋的過場吧。關於螺旋的計算是參考這篇(http://stackoverflow.com/questions/4638317/how-to-implement-this-rotating-spiral-in-webgl)。
修改後呈現的效果大概是這樣
另外一種方式
當然原本的旋轉也有
修改後呈現的效果大概是這樣
另外一種方式
當然原本的旋轉也有
Unity - 遊戲中擷取畫面(Screenshot)
最簡單的方法就是使用Unity提供的API來擷取遊戲畫面,例如:Application.CaptureScreenshot("filename.png")
就會直接把畫面存成PNG檔案。
另外一種使用ReadPixels來貯存畫面資料,因為使用第一種方法會先把檔案存下來,要使用的話還必須Load檔案才行,不過若只要單純的擷取圖片使用這個即可。如果想要操弄擷取的畫面又或者是不需要存檔的話,建議可以使用ReadPixels,這個也只要再加上檔案寫入的方法,也同樣可以把圖片存下來。
Code:
如果要把讀取的資料存成圖片檔也很簡單,用File I/O把Texture2D的資料寫入檔案即可
就會直接把畫面存成PNG檔案。
另外一種使用ReadPixels來貯存畫面資料,因為使用第一種方法會先把檔案存下來,要使用的話還必須Load檔案才行,不過若只要單純的擷取圖片使用這個即可。如果想要操弄擷取的畫面又或者是不需要存檔的話,建議可以使用ReadPixels,這個也只要再加上檔案寫入的方法,也同樣可以把圖片存下來。
Code:
public Camera myCamera; IEnumerator Screenshot() { //在擷取畫面之前請等到所有的Camera都Render完 yield return new WaitForEndOfFrame(); Texture2D texture = new Texture2D((int)myCamera.pixelWidth, (int)myCamera.pixelHeight); //擷取全部畫面的資訊 texture.ReadPixels(new Rect(0, 0, (int)myCamera.pixelWidth, (int)myCamera.pixelHeight),0,0, false); texture.Apply(); //自己處理畫面資料的方法 //... }
如果要把讀取的資料存成圖片檔也很簡單,用File I/O把Texture2D的資料寫入檔案即可
void SaveTextureToFile(Texture2D texture, string fileName) { byte[] bytes = texture.EncodeToPNG(); string filePath = Application.dataPath + "/" + fileName + ".png"; using (FileStream fs = File.Open(filePath, FileMode.Create)) { BinaryWriter binary = new BinaryWriter(fs); binary.Write(bytes); } }
Labels:
Unity3D
Unity - 使用低階圖形指令GL(Low-level graphics library)在畫面上繪製圖像時遇到的狀況
一、GL的執行順序是立即執行,所以如果在Update裡面呼叫的話,他會在Camera Render之前執行,而接著Camera的更新會讓你的GL繪圖被蓋掉,所以最好在OnPostRender()裡面呼叫GL指令。
Labels:
Unity3D
CryEngine 學習筆記 1 - 開始前準備
剛好對於CryEngine有點興趣,同時他又開放免費版的SDK可以使用,這邊就記錄一些心得。
首先當然是要先去官網下載SDK(http://www.crydev.net/),如果沒有帳號的最好順便趁等待下載的時間註冊一個新的帳號,因為之後執行引擎的時候要輸入帳號。
首先當然是要先去官網下載SDK(http://www.crydev.net/),如果沒有帳號的最好順便趁等待下載的時間註冊一個新的帳號,因為之後執行引擎的時候要輸入帳號。
Labels:
CryEngine
Subscribe to:
Posts (Atom)