*此教學使用Unity 5.3.2f1 (64-bit)免費版
*最後更新時間2016/03/24
position、localScale、Rotate可以用new Vector3就能達到效果,
但是不允許直接設置X.Y.Z的值而是必須先宣告Quaternion (四元數)
本文將教學: Unity角度的運用
Quaternion.Euler角度鎖定
transform.localEulerAngles判別式運用
----------------------------------------------------------------------------------------------------------
transform.Rotate可用於旋轉物件,例如轉動的風扇或螺旋槳
Quaternion.Euler可用於鎖定角度,不會旋轉,指定為多少就是多少不適合用來做平滑動作
Quaternion.identity 此為唯讀程式碼,可解釋為"不更動角度
transform.localEulerAngles.x 後面可加.x、.y、.z,用於判別式判斷角度,可用於搭配print除錯
先來看Rotaterotation的差別
(以下程式碼寫在Update裡)
每次旋轉增加2度的寫法(一直轉):
gameObject.transform.Rotate (new Vector3 (0f, 0f, 2f));
直接就是2度的寫法(指定角度不動):
gameObject.transform.rotation = Quaternion.Euler (0f, 0f, 2f);
接下來練習用Quaternion設置角度
先宣告一個Quaternion :
Quaternion quate = Quaternion.identity;
然後設置角度:設置X軸方向旋轉45度
quate.eulerAngles = new Vector3(45, 0, 0);
然後再把quate賦予給Gameobject:
gameobject.transform.rotation = quate;
transform.localEulerAngles可用於有關角度的判別式,例如
void FixedUpdate()
{
if (Input.GetMouseButton(1))
{
if (transform.eulerAngles.z <= 10)
{ transform.Rotate(Vector3.forward * Time.deltaTime * 10);> }
}
else
{
if (transform.eulerAngles.z > 0)
{
transform.Rotate(-Vector3.forward * Time.deltaTime * 10);
if (180.0f < transform.eulerAngles.z)
{ transform.eulerAngles = Vector3.zero;
}
}
}
2016年3月24日 星期四
2016年3月9日 星期三
Unity_C#_在Unity中播放影片
2020/06/03更新
此為Unity 5x版本的方法
新版請使用Video Player Component
===============================================================
*最後更新時間2016/05/30
此教學為使用Plane播放,若要使用UGUI請看Unity_C#_開頭動畫的製作
Unity支援的影片格式有: .mov、.mpg、.mpeg、.mp4、.avi、.asf
播放影片是使用的MovieTexture為Texture的子類別,與貼圖非常相近,
如影片含音頻會自動生成audio文件,如沒音頻就無生成。
本文將教學:
Unity播放影片(含音軌)
----------------------------------------------------------------------------------------------------------
本教學使用的影片為.mov檔,需要安裝Quicktime,
如果電腦裡沒有quicktime,可到下列網址下載(安裝完需重新開啟Unity):
http://www.apple.com/tw/quicktime/
1.先在場景中新增一個Plane,把Main Camera對準它。
2.直接把你的影片檔拖曳至Unity Asset視窗,或在檔案管理員中直接加入(需等待一段時間)。

3.這時就會產生一個MovieTexture了,
如果你的影片含有音軌,可以展開看到Audio Source。
4.這時你可以設置你的MovieTexture品質,調越高容量越大和載入時間越長。
依需求調整。
5.這時對Asset視窗案右鍵,產生Material。
設定其Shader,在此設定為Legacy Shaders-Self-Illumin-Specular
此設定適合用來當作電視螢幕,你也可以設置其他Shader試試看。

6.把你的MovieTexture拖曳到如圖位置。

7.這時可以把Material和Audio Source拖曳到Plane的Component裡。
此範例不需要Play On Awake(載入場景時自動撥放),故取消勾選。

8.這時進入腳本階段,新增一個C#腳本,開始撰寫腳本如下。

解釋程式碼:
public MovieTexture movTexture;
//宣告公開變數電影材質,設為公開為了之後拖曳
private AudioSource movAudio;
//設定影片音軌
GetComponent<Renderer>().material.mainTexture = movTexture;
//設置主要材質為movTexture
movTexture.loop = true;
//movTexture是否重複撥放
movAudio = GetComponent<AudioSource>();
//設置movAudio變數為物件之AudioSource
if (Input.GetKeyDown(KeyCode.A) && movTexture.isPlaying == false)
//如果鍵盤A被按下且movTexture正在撥放為否時
GetComponent<AudioSource>().Play();
//這一段被註解掉,因為有為AudioSource設變數movAudio,如果你不想設置變數可以直接 使用此程式碼
Play(); Pause(); Stop(); //字面上的意思
如果需要複製可複製以下程式碼
---------------------------------以下附上完整程式碼--------------------------------------------------------------
public MovieTexture movTexture; //電影材質
private AudioSource movAudio; //影片音軌
void Start()
{
GetComponent<Renderer>().material.mainTexture = movTexture;
movTexture.loop = true;
movAudio = GetComponent<AudioSource>();
}
void Update() {
if (Input.GetKeyDown(KeyCode.A) && movTexture.isPlaying == false)
{
//GetComponent<AudioSource>().Play();
movTexture.Play();
movAudio.Play();
}
if (Input.GetKeyDown(KeyCode.S))
{
//GetComponent<AudioSource>().Pause();
movTexture.Pause();
movAudio.Pause();
}
if (Input.GetKeyDown(KeyCode.D))
{
//GetComponent<AudioSource>().Stop();
movTexture.Stop();
movAudio.Stop();
}
}
---------------------------------以上附上完整程式碼------------------------------------------------------------9.把腳本掛在Plane上,再把MovieTexture拖曳到程式碼的公開區。

10.這時你可以開始測試你的影片是否能撥放了!

訂閱:
文章 (Atom)
-
*此教學使用Maya 2019 *最後更新時間 2020/06/05 ---------------------------------------------------------------------------------------------------------...
-
2020/06/03更新 此為Unity 5x版本的方法 新版請使用Video Player Component =============================================================== *此教學使用Unity 5.3.2f1...
-
*此教學使用Unity 5.4.0f3 (64-bit)免費版 *最後更新時間2016/09/02 本文將教學: 開頭動畫的製作 ------------------------------------------------...