2019年5月7日 星期二

Week12 李宜謙

試著實作用Sphere 做出來得富有彈性的彈簧模型

六個Sphere 都是一個施力點,想像是一條鍊子


老師試著在Processing 上示範,用到虎克定律的物理模擬來讓線段具有彈性

伸長量的圖示

VR Real Week12

期中作品製作

將討論的東西分工開始製作

目前已經開始製作場景

以及編寫程式碼還有unity的設定

Week12-04160453

嘗試VR中移動,用了雷射傳送點移動,雷射很有趣

week12

製作MAYA模型

將其匯入場景中



















匯入時須將裏頭的camera全部去除,場景中只留下一個攝影機(camera rig)
且將模型大小調整好後,應丟入一個空物件,使得座標變為(0,0,0),大小為(1,1,1)

8ㄍ VR實境課週記 Week12

Week 12

水管與感測器的識別

期末進度更新

****使用Trigge來作為偵測****

而不是使用Rigidbody 

.
.
.
.
code
void OnTriggerEnter(Collider collision)
{
print("collision");
}
.
.
.
.

Week12_第十堂 期末專題報告進度

場景大概布置好,需要做出最基礎的建屋的材料:木材、瓦片(已塗膠)
木材為長方形,用Unity就可以建好,就直接Create Cube 拉成長方形,GOOGLE木材的材質貼圖,拉至Asset變成Prefab(預知物)。
瓦片先等待另一位組員建模完。
窗戶也是用Unity許多Cube做成,比較特別是其中一個Cube作窗戶的玻璃,所以材質用城玻璃樣子,上網查都是要寫程式改變,我比較簡單透明化。
(但許多教學滿有趣感天可以來試試看,EX:https://blog.csdn.net/dbtxdxy/article/details/45302087)
先簡單設計房子,建造梁柱,比較想是剛施工的樣子。
也先拼好木材要放的位子直接用碰撞偵測SetActive(false)變成(true)。
但後來發現一開始將Active變成false就會找不到物件所以改成用改變layer的方式。
先將拼好木材的Layer放入自己設好的house(tag),將玩家的Camera的house的勾給取消,這樣表示玩家的攝影機,會看不到house層裡的物件,正確的tag物體碰到就改變(拼好的)木材的layer變成玩家可以看見的layer,EX:0:Default。
範例程式碼:
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour {
    void OnGUI () {
        if(GUILayout.Button("Display")){
            gameObject.layer = LayerMask.NameToLayer("Default");
        }
        if(GUILayout.Button("Hide")){
            gameObject.layer = LayerMask.NameToLayer("MyLayer");
        }
    }
}

2019年5月6日 星期一

黃惠嘉05160080_VR_Week12

視窗顯示
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class windows : MonoBehaviour
{
public Rect windowPosition;//儲存不可被拖曳的window的位置
public Text First;
public Rect buttonPosition;//儲存button在window內的位置
bool a=true;
void Start()
{
setWindowPosition();
setButtonPosition();
First.GetComponent<Text>() ;
First.text="按下手把的trigger即可進入遊戲";

}

void setWindowPosition()//設定window的位置
{
float windowWidth = 500f;
float windowHeight = 150f;
float windowLeft = Screen.width * 0.5f - windowWidth * 0.5f;//window和Game左邊的距離,目前設定的值會讓window顯示在螢幕正中央
float windowTop = Screen.height * 0.5f - windowHeight * 0.5f;//window和Game上面的距離,目前設定的值會讓window顯示在螢幕正中央

windowPosition = new Rect(0, 0, windowWidth, windowHeight);//將不可被拖曳的window設定在Game左上角
}

void setButtonPosition()//設定windows內的button位置
{
float buttonWidth = 50f;//按鈕的寬度
float buttonHeight = 50f;//按鈕的高度
float buttonLeft = windowPosition.width * 0.9f - buttonWidth * 0.5f;//按鈕和window左邊的距離,目前的值會讓button顯示在window的正中央
float buttonTop = windowPosition.height * 0.7f - buttonHeight * 0.5f;//按鈕和window上面的距離,目前的值會讓button顯示在window的正中央

buttonPosition = new Rect(buttonLeft, buttonTop, buttonWidth, buttonHeight);//button將會顯示在window正中央
}
void OnGUI()
{
//顯示window,但是無法拖曳
if(a){
GUI.Window(0, windowPosition, windowEvent, "對話");
}else{
First.text="";
}
}

void windowEvent(int id)//處理視窗裡面要顯示的文字、按鈕、事件處理。必須要有一個為int的傳入參數
{
if (GUI.Button(buttonPosition, "確定"))//在window上顯示按鈕
{
if (id == 0)//若是id為0,代表是不可被拖曳的window
{
Debug.Log("進入遊戲");
a=false;
}
}
}
}