2014年1月3日 星期五

[unity]在C#中控制遊戲物件

宣告遊戲物件

  1. public GameObject phoneObj;
  2. 宣告後在Inspector界面將實體物件與程式物件做連結。












利用已存在的遊戲物件做遊戲物件的複製


  • GameObject phoneCube_2 = (GameObject)Instantiate(原遊戲物件,要出現位置,Quaternion.identity);
  • Quaternion.identity:代表無旋轉,跟著父物件的角度


位置宣告指定方法

  • private Vector3 = phoneCube_2_pos = new Vector3(float x,float y float z);



利用鍵盤輸入準備移動物件

  • Input.GetKeyDown(KeyCode.space)-->press space true/false

參考


移動物件-Object.transform.Translates()   (移動變化量)


  •  transform.Translate(Vector3.up * Time.deltaTime, Space.World);
  • transform.Translate(0, 0, Time.deltaTime,Space.World);
  • translate(Vector3.right * Time.deltaTime, Camera.main.transform);
  • transform.Translate(Time.deltaTime, 0, 0, Camera.main.transform);

參考





















2014年1月1日 星期三

[unity]GameObject的貼圖、旋轉


旋轉物件

  • 點選物件 -> 按E



移動物件

  • 點選物件 -> 按W












縮放物件

  • 點選物件->按E

遊戲物件上貼圖


一、建立材質球

  1. create->material
  2. Inspector->Shader->Unlit->Transparent

















二、材質球上貼圖

  1. 弄一張帶有alpha的圖,PhotoShop轉存png。
  2. 材質球->Texture Select->選擇png圖。























三、遊戲物件上貼上材質球


  • 遊戲物件上->Mesh Renderer->Element 0 











結果
















Reference

  • FBILab-林世昌學長



2013年12月1日 星期日

Unity-連接Arduino+碰撞事件




  • 先在Arduino端設置四顆按鈕,並在按下後傳送1、2、3、4,分別控制物體的上下左右
  1. Serial.write(3);
  2. Serial.flush();
  3. delay(20);

  • Unity接收Arduino傳來的數值

  1. file->Build and Setting->Player Setting->API Compatibility Level->.NET 2.0
  2. Assets->create->c#
  3. using System.IO.Ports
  4. SerialPort sp = new SerialPort("COM7",9600);
  5. 在Start function 中 開啟sp->sp.Open()、sp.ReadTimeout = 1
  6. 在updata function 中 先確認sp是否正確->sp.IsOpen(true/false)-->try and catch
  7. 改變object的位置->transform.Translate(Vector3.left*speed,Space.World)
  8. 利用Vector3的left、reght、forward、back、up、down來改變三軸在空間中的位置

  • Unity碰撞事件

  1. 在想撞人的物體上加上剛體:component->Physics->Rigidbody
  2. 撞人和被撞至少有一個開啟Is Trigger才撞得進去:Sphere Collider->Is Trigger
  3. 當撞到且撞得進去時呼叫:void OnTriggerEnter(Collider other)  (有勾Is Trigger)
  4. 當撞到但撞不進去時呼叫:void OnCollisionEnter(Collision collisionInfo) (都沒勾Is Trigger)