Unity:在指定位置產生一台車子

//C#

此方法可以在指定位置產生物件

transform.position =new Vector3(-30.0f, 0,0);

Instantiate(bus, transform.position, Quaternion.identity);

較好的用法:將位置指定在新的變數

比較

當Script是指定到Camera時 容易產生:”物件已經產生 但看不到“的問題 例如:

  • >用Raycast功能 讓user點擊某個按鈕
  • >然後產生一個物件

因為當只用transform.position去做改變時 同時也改變了Camera的位置

所以重新指定新的位置變數 可以解決此問題

從3ds max, Maya輸出物件或人物動作到Unity

場景/不帶骨架的靜態物件輸出, 只有UV1 (objects without any bones and UV1 only)

  • 使用obj/FBX輸出

場景/不帶骨架的靜態物件輸出, 有UV1,UV2  (objects with bones, contains UV1 and UV2)

  • 使用FBX輸出

多重材質輸出(Mutli/Sub Material)

  • 使用FBX輸出

帶骨架的物件輸出 (Objects with bones)

  • 使用FBX輸出
  • 如果是3dsmax 2012前(不含)的版本 骨架輸出會有軸向問題 使用3dsmax2012可解決此一問題
  • 使用Maya沒有此問題

Export Package後材質跑掉的問題

  • 狀況:輸入一個新的物件(obj/fbx) 並將該物件拖進場景後 輸出成package後 再import package到別人的專案時 材質不見了
  • 原因:因為預設狀態下會Unity去讀取obj/fbx帶進來的材質 所以當重新輸出成package後 該場景物件會去找原本obj/fbx帶進來的材質 有時ok 有時會發生材質不見或材質設定錯亂的不穩定情形
  • 解決:輸出前記得將該場景物件拖到Asset資料夾轉換prefab 然後再輸出一次就可以了

Unity>Game Object >Create Empty妙用

Create Empty後會產生一個空物件 叫她spawner好了

將此空物件重新歸零 (0 0 0)

然後將產生器spawner放好定位 以我的game為例 我有4個怪物產生器分別在4角落

再將此4個怪物產生器全部attach到spawner下

然後建立一個prefab

再將場景中的spawner刪掉

再到 awake() 裏用instantiate產生此spawner就可以了

好處:

  • 因為此空物件已先歸零 所以之後如果因人為錯誤導致位移 也較好調整
  • 如果只是單純產生指定物件 要旋轉到其它方向 就要另外控制 用此方法 我們就可以先將child物件擺好方向
  • code比較少

使用外部Script的方法

keywords: script outside, members variables and global variables

reference page

應用:打倒敵人 >金幣增加

 

Script: gotHit.cs

//attach this script to zombie

//onTriggerEnter()

//if collider with tag(“zombie”)

*//statusControl.score+=100;

 

Script: statusControl.cs

//attach this script to any GUI object

//重要: public static int lives = 3; 有static 才能從外部使用它

//onGUI()