第4天讓狗吃了.....
今天我們終於走到了正點上:關於C#腳本中對對象的基本操作
我們先推薦一個博主:大學霸,這是鏈接
http://my.oschina.net/u/1585857/blog?catalog=470833&p=2&temp=1468725572314
他列表中2015年有許多關於Unity3D的東西可以看
然後再推薦另外一個博主,脫莫柔,她貌似一直在做Unity3D方面的東西,下面是鏈接
博客園(搬家前)
http://www.cnblogs.com/fortomorrow/CSDN(搬家後)
http://blog.csdn.net/asd237241291
今天完成的內容很簡單,在下面這篇博客裏完全包含:
http://www.cnblogs.com/fortomorrow/archive/2012/10/30/unity05.html
一、物體的移動、縮放、旋轉
移動很簡單,爲物體添加剛體組件,然後在腳本的 Start() 方法中添加如下代碼,即可完成速度的設置,程序會自動運行它的運動過程
GetComponent<Rigidbody2D>().velocity = new Vector2(-1, 0);
縮放和旋轉則不一樣,是通過對物體的 transform 屬性進行修改完成的,所以都放在了 Update() 方法下面,代碼如下
transform.Rotate(new Vector3(0, 0, 3)); /// 完成旋轉,這個 x, y, z 分別指的是
/// 繞 “對應軸” 旋轉的角度
/// 我做的是2D的,所以都是繞着 z 旋轉的
transform.localScale += 0.001f*(new Vector3(1, 1, 0)); /// 完成縮放
/// 同樣,向量中 X,Y,Z 分別爲對應軸的縮放
這裏來說明下不放在 FixedUpdate() 中,因爲 FixedUpdate() 方法是物理引擎更新的地方,也就是說如果要修改上面的速度的話,就應該放在 FixedUpdate() 裏頭,因爲是物理引擎中“剛體”的屬性。
二、輸入的獲取
1.輸入指定按鍵:
//按下鍵盤“上方向鍵”
if(Input.GetKey ("up"))
print("Up!");
//按下鍵盤“W鍵”
if(Input.GetKey(KeyCode.W);)
print("W!");
也就是說,對於按鍵的判定爲 bool 型。
2.鼠標控制//按下鼠標左鍵(0對應左鍵 , 1對應右鍵 , 2對應中鍵)
if(Input.GetMouseButton(0))
print("Mouse Down!");
Input.GetAxis("Mouse X");//鼠標橫向增量(橫向移動)
Input.GetAxis("Mouse Y");//鼠標縱向增量(縱向移動)
對於鼠標按鍵的判定也是 bool 型。倒是獲取鼠標位移還算正常,返回值爲?int?
3.獲取軸:
//水平軸/垂直軸 (控制器和鍵盤輸入時此值範圍在-1到1之間)
Input.GetAxis("Horizontal");//橫向
Input.GetAxis ("Vertical");//縱向
返回值類型???
鼠標和獲取軸沒做,不要怪我,我也很努力的在完成另外一個問題,暫時沒有解決。等解決了自然會把這裏補上的,今天就這些,苦逼的週日的下午,一直沒找到解答。。。。。
(續)終於解決了這個問題,先給鏈接,再進行描述:
http://blog.okbase.net/unity3d/archive/4611.html
非常感謝這位仁兄給的教程,順便吐槽下百度。。。真的不行,搜索 Sprite.Create 失敗,竟然全都是 Sprite.Create 怎麼用,哼,最後還是依靠了 Bing 和yaHoo 走回來的,我都跑 Unity 論壇上去發帖了,
爲題描述如下:我要做動畫,而我希望的完成方式是,有N幅圖像,每隔一段時間切換一張,用這種非常原始的方式完成動畫
我的環境:VS2013 + Unity3D 5.3
那麼首先,我的資源是這樣的
拖入 Unity 的資源管理器後,是這樣的
然後呢,我希望它是3幀的,處理一下,在右上角將 Sprite Mode 修改爲 Multiple(多精靈),然後點擊下圖中 Sprite Editor 進行處理(它會提示是否保存,點擊保存,因爲剛剛修改爲Multiple了)
進入 Sprite Editor 後,如下圖,左上角 | slice ♦ | Trim|,點開 slice,就可以看到左上角彈出窗口了,點擊 Slice即可完成自動分割,圖中可以看到我分割的結果,三個圓都有一個矩形框。右下角彈出窗口是選中框的狀態信息。
退出 Splice Editor,點擊應用即可,那麼,圖片處理好了,我們在 Project 創建一個 C#腳本,雙擊即可打開 VS,代碼如下
public class StateCake : MonoBehaviour {
public int num = 0; /// 選擇圖片序號
public int counter = 0; /// COUNTER 計數器
public Sprite[] sprites; /// 這個就是存儲我們剛剛處理的幾張圖像的地方,精靈數組
private SpriteRenderer render; /// 這個是存放渲染器的地方
// Use this for initialization
void Start () {
render = GetComponent<Renderer>() as SpriteRenderer; /// 初始化時,我們獲取對象的渲染器
}
// Update is called once per frame
void Update () {
counter += 1;
if(counter>60)
{
counter = 0;
num += 1;
if(num>2)
{
num = 0;
}<span style="font-family:Arial, Helvetica, sans-serif;"> /// 前面是用來選擇圖片的代碼</span>
else if(0 == num)
{
render.sprite = sprites[0]; /// 選擇精靈,賦值給渲染器
}
else if(1 == num)
{
render.sprite = sprites[1];
}
else if (2 == num)
{
render.sprite = sprites[2];
}
}
}
}
代碼很明朗,就是切換三個圖片的。保存關閉VS,回到Unity。接下來在Hierarchy創建一個 2D Object -> Sprite,我們取名爲 StateCake,然後將腳本拖拽並放到它上面。可以看到 StateCake 現在就有這些組件:
首先是沒有標紅的 Transform 組件,就是前面操作旋轉和縮放的組件,
然後是 Sprite Renderer,就是代碼裏面初始化時獲取的渲染器組件,那麼 Sprite 屬性值,就是更新中我們賦值的那個屬性了
最後是 State Cake 組件,可以看到標註了 ( Script ),就說明是腳本組件了。看底下的參數,正是我們定義的 Num, Counter,以及 Sprites(尺寸暫時爲0)。
接下來就是最最最關鍵的一個步驟了,爲了這個步驟我可是折騰了一個下午。點右上角的鎖定,那麼當你切換選擇時 Inspector 保持在 StateCake對象上。後面的操作看下面的圖,邊看邊講:
剛剛製作的圖,右邊有個三角點開,選擇全部三個圖片(紅框內:選擇第一個,按住shift,再選擇最後一個)
然後,拖拽到右邊藍色區域內,則會自動添加進去(就這個拖拽!拖拽!拖拽!一下午加上一晚上啊)
然後可以看到右邊紅框內,就添加進去三個圖片了,此時運行程序,就可以看到餅在變了。
終於搞定了,好開心,好充實的一天。。。。