Unity (Ch1)

熱鍵

1
2
3
W: 移動物件
E: 旋轉物件
R: 拉伸物件

基本介面

2017_09_13_1.png
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Transform    : 物件位置/旋轉/大小

Mesh Filter : 物件形狀

Box Collider : 物件碰撞設定
可以按 Edit Collider 按鈕決定物件碰撞的範圍

Mesh Renderer: 物件材質
可以在 Asset 建立材質,然後直接拉給物件使用

Rigidbady : 鋼體,和真實物理相關的設定
質量設定(Mass)
例如使用重力(Use Gravity)
Is Kinematic 打勾物件就不會動

Script

Asset -> Create -> C# Script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 預設程式碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}
}

Start 會在一開始使用,之後就不會再呼叫

Update 會在每一次 frame 呼叫一次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour {

public bool varBool = false;
public string name = "Jason";
public int number = 2;
// Use this for initialization
void Start () {
Debug.Log(varBool);
Debug.Log(name);
Debug.Log(number);
}

// Update is called once per frame
void Update () {

}
}

變數加上 public 可以在 Unity 裡面覆寫掉原本的值

有個要注意的地方是,你可以在play 模式直接改變值,或是增加其他物件等等

畫面會及時顯示出來改變的東西,當你暫停時會回復到原始的狀態

改變play 模式顯示的顏色可以去下面設定

1
Edit -> Preferences -> Color

匯入素材

1
2
3
4
5
6
7
Import New Asset

Create -> 2D Object -> Sprite

再把剛剛匯入的素材拉到 Sprite 中的 Sprite Renderer

如果拉不過去,要先把素材的 TexTure Type 改為 "Sprite (2D & UI)"

一開始的素材是把多張圖合成一張

2017_10_09_1.png

我們目的是把此張圖切成不同小張圖

首先 Sprite Mode 改為 Multiple

2017_10_09_2.png

再按 Sprite Editor -> 按下 Slice 就會自動切 -> Apply

2017_10_09_3.png 2017_10_09_4.png

選第 7 張當作初始圖

2017_10_09_5.png

控制人物

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void Update () {
Movement();
}

void Movement()
{
if( Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow) )
{
transform.Translate(0, speed * Time.deltaTime, 0);
}

if( Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow) )
{
transform.Translate(0, -speed * Time.deltaTime, 0);
}

if( Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow) )
{
transform.Translate(-speed * Time.deltaTime, 0, 0);
}

if( Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow) )
{
transform.Translate(speed * Time.deltaTime, 0, 0);
}
}

如果不想要你的人物能斜著走,改成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Update is called once per frame
void Update () {
Movement();
}

void Movement()
{
if( Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow) )
{
transform.Translate(0, speed * Time.deltaTime, 0);
}
else if( Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow) )
{
transform.Translate(0, -speed * Time.deltaTime, 0);
}
else if( Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow) )
{
transform.Translate(-speed * Time.deltaTime, 0, 0);
}
else if ( Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow) )
{
transform.Translate(speed * Time.deltaTime, 0, 0);
}
}