1. 程式人生 > 其它 >unity---2d遊戲雜記

unity---2d遊戲雜記

2d遊戲製作的筆記

save Layout 增加配置

Packges資料夾

	外掛

調整視野

滑鼠中鍵			拉近拉遠
滑鼠右鍵			平移
Alt+滑鼠左鍵	移動視角

Pivot/Center

當前物體中心和多個物體共同的中心

Local/Global

全域性座標

步移工具

工具:

1.Sprite Renderer 
	Order in Layer 可以調節物體的前後關係 值越大越在前面

不要亂改script檔名

Start()方法只會執行一次,類似於初始化
Update()方法會不斷迴圈執行
Time.deltaTime	表示多久時間可以跑一次Loop	解決不同電腦運作速度不同
如果將屬性設定為public或者加入[SerializeField] 就可以直接在Unity中調整

Rigidbody 2D 剛體

類似真實物體,可以自由落體

Collider 碰撞

給兩個物體都增加Collider元件,可以碰撞在一起
is Trigger 不會碰撞在一起,只作為監測

判斷是否撞在一起

 private void OnCollisionEnter2D(Collision2D other) {
    if(other.gameObject.tag == "Floor1") Debug.Log("撞到第一種階梯");
    else if(other.gameObject.tag=="Floor2")Debug.Log("撞到第二種階梯");}

判斷是否經過這個物體 需要給對應物體勾選 isTrigger

private void OnTriggerEnter2D(Collider2D other) {
    if(other.gameObject.tag=="DeathLine"){
      Debug.Log("你輸了");
    }
}

將你製作好的樣板放入assets檔案中,可以快速拖去重複相同的樣板

	overris 還可以修改所有樣板

程式碼建立物體 ,並放入另一個物體下

 Instantiate(FloorPrefabs[r],transform);

刪除物件

 Destroy(gameObject);

控制父物件去更新子物件

 transform.parent.GetComponent<FloorManagger>().SpawnFloor();

讓物件不斷移動

 transform.Translate(0,MoveSpeed*Time.deltaTime,0); 

控制物件失去碰撞功能

  currentFloor.GetComponent<BoxCollider2D>().enabled=false;

法線法向量

垂直接觸面 

讓某個物體不顯現

 HpBar.transform.GetChild(i).gameObject.SetActive(false);//反之為true

使用UI庫

using UnityEngine.UI;	

人物水平翻轉,轉身

 GetComponent<SpriteRenderer>().flipX=false;

給人物新增動畫

component功能選擇animator
建立animator controller
windows -> animation
建立動作clip
將貼圖或者錄製好的圖片放入
調出animator 視窗
選擇條件
	bool			anim.SetBool("run",true);
	trigger		anim.SetTrigger("hurt");
設定Layers權重值
選擇箭頭線
	settings
		可以將切換動畫的時間全部設為零,√可以去掉
		exit time 為動畫閃爍的次數

新增聲音

component -> audioSourse
取消勾選play on wake 一開始就播放
other.gameObject.GetComponent<AudioSource>().Play();

遊戲暫停

Time.timeScale=0f;

UI button

on click()
選擇物件和方法

繼續遊戲

using UnityEngine.SceneManagement;
public void Replay()
{
    Time.timeScale=1f;
    SceneManager.LoadScene("SampleScene");
}