發表文章

目前顯示的是 4月, 2016的文章

VR & TV - Joystick FPS

圖片
VR & TV - Joystick FPS 負責 Unity 企劃 & 程式 出處 本人隸屬工作室 SurfMonster studio Google play : https://play.google.com/store/apps/details?id=com.surfm.vrfps 本遊戲基本需求為兩個智慧型裝置,一是遊戲本身畫面的裝置以及一個作為搖桿使用的裝置 本遊戲可以運行在VR(Cardboard)/SmartTV/Pad 或 Smart Phone. 本遊戲可透過您的PAD或是其他智慧型手機來當作遊戲搖桿,使您能更容易操作與進行遊戲。 使用方法: 1.選擇遊戲模式 (VR or TV/Tablet) 2.跳出Qrcode 和短網址 3.另一隻手機透過Qrcode 掃描器掃描,或是在瀏覽器打上短網址 (這支手機將會是你的遊戲搖桿) 4.連結搖桿 5.搖桿的那隻手機滑動螢幕左邊,來移動人物 6.搖桿的那隻手機滑動螢幕右邊,來旋轉視角,和射擊 7.享受你的遊戲時光吧! --- 如有您也想開發這樣的遊戲,請與我們連絡--- Joystick FPS Game is inspired by a Unity tutorial ( http://unity3d.com/learn/tutorials/projects/survival-shooter ). All the assets in Joystick FPS Game are properly licensed or created solely for this game.

[Unity] 敵人,怪物如何自動找到你透過NavMesh 快速開發

圖片
如果要開發RPG或是FPS 類型遊戲,其中很多電腦敵人或是NPC同伴,那光是處理路徑計算,就叫人吐血了 還好Unity 有提供 NavMesh 的方法,只要告訴NPC 要去的 Vector3(座標),它就會乖乖去摟 那要按照以下步驟 1.在NPC身上加上 NavMesh  Component 2.需要告訴NPC 的 NavMesh  要往哪裡走,這時就需要寫一下Script void Update() { if (! player.death/*判斷使用者還活者*/ ) { // ... 告訴NPC 目前要去的目標,那這裡是玩家的座標 nav . SetDestination ( player . position ) ; } // Otherwise... else { // ... disable the nav mesh agent. nav . enabled = false ; } } 3. 直接運行的話,會噴錯喔 XD 錯誤如下 SetDestination can only be called on an active agent that has been placed on a navmesh 4. 那是因為要使用 NavMesh 要先 Bake (就像是CS BOT 新地圖要讓BOT 研究一下路線阿),到 Window > Navigation > Bake 點擊下方的 Bake 5. Bake 完後地圖就會出現路線區域標示 這樣就大功告成啦 BTW 建議Bake時不要把主角放到場景上喔,因為這樣有時候主角會變成無敵的XD(collider 會失效)

[Unity] 如何把手指點擊座標換成Unity UI 的座標

        // 先捉取螢幕座標         Vector3 screenPos = Input.mousePosition;         //轉換成空間中做邊(Unity 有提供轉換的方法)         Vector3 worldPos = Camera.main.ScreenToWorldPoint(screenPos);         //取得欲轉換到某Unity UI 元件的 transform         Transform t = transform; /*{取得某UI 元件的 transform}*/         //透過矩陣運算得其座標         Vector3  uiPos = t.worldToLocalMatrix.MultiplyVector(worldPos);         // 如果要把Ui中的座邊換成原本的座標,就乘上其反矩陣         Vector3 orgPos = t.worldToLocalMatrix.inverse.MultiplyVector(uiPos);         Debug.Log("worldPos="+ worldPos+ " orgPos="+ orgPos);         //或是利用 localToWorldMatrix(其實這個就是反矩陣)         Vector3 orgPos2 = t.localToWorldMatrix.MultiplyVector(uiPos);         Debug.Log("worldPos=" + worldPos + " orgPos2=" + orgPos2); PS 上述的 Log worldPos 應該就是等於 orgPos2和 orgPos