CT APE
【遊戲介紹】
城市猿要和身上的蝨子搏鬥,因此展開了攻防戰,在贏得勝利的同時製造混亂擾亂敵人吧!
【遊戲連結】
【Github】
【筆記】
由於之前做過吃蜂蜜的影響,利用陣列來判斷拼圖是否能夠被移動的刻板印象一直存在在腦中,所以在轉換到Unity要使用碰撞時一直想不透,總是會有拼圖卡死的bug
原本的做法:由玩家去控制拼圖移動,再由拼圖本身去判斷碰撞的物體
問題:上一幀的位置根據電腦效能是不一定的,拼圖位置可能設置為碰撞到之後的位置,而拼圖又被設成不能動
boxbox.cs1 2 3 4 5 6 7 8 9 10 11 12 13 14
| private void OnTriggerEnter2D(Collider2D collision) { if(collision.tag == "box") { transform.position = lastPos; canMove = false; } if (collision.tag == "Player") { player = collision.GetComponent<Player>(); player.canMove = false; player.LastPos(); } }
|
幸好這次的隊友指點迷津,利用射線來判斷是否遇到邊界或拼圖:
- 判斷從玩家發出的射線和玩家想互動的拼圖是不是同一片,是則可以互動,否則反之
- 當玩家放開互動鍵時,直接將所有拼圖設置成物理靜態
playerplayer.cs1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| void raycastBox() { RaycastHit2D o = Physics2D.Linecast(transform.position, transform.position + faceTo, test); if (o) { if (Input.GetKey(interact)) { o.collider.gameObject.GetComponent<Box>().followPlayer(boxSpeedX, boxSpeedY); o.collider.GetComponent<Box>().checkName(o.collider.gameObject.name); canDragOther = false; } } if (Input.GetKeyUp(interact)) { canDragOther = true; for (int i = 0; i < GameObject.FindGameObjectsWithTag("box").Length; i++) { FindObjectsOfType<Box>()[i].GetComponent<Box>().setStatic(); } } }
|
上一篇:321 Stop!
下一篇:Animal Escape