iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
自我挑戰組

老菜雞挑戰30天學爆Unity&C#會成功嗎?...系列 第 9

【Day9】老菜雞學下樓梯遊戲之Unity GetComponent&Enable Component

  • 分享至 

  • xImage
  •  

前言

昨天有學到Unity Instantiate&GetComponent&Destroy這個方法,今天要學習的內容也會用到GetComponent~


  • 問題:當Player被天花板尖刺刺到時,會變成這個樣子↓
    https://ithelp.ithome.com.tw/upload/images/20220921/20152411JczQDxWcUo.jpg
    Player與階梯有點卡住、被壓縮到的感覺,大家應該都知道我們需要的效果是...當Player被刺到時要直接從階梯上掉下去。
  • 方法:只要當Player被天花板尖刺刺到時,就將它腳下的這塊階梯的碰撞功能,也就是Box Collider 2D取消掉。
    https://ithelp.ithome.com.tw/upload/images/20220921/20152411r16CPhaqFN.jpg
  • 首先要先記錄Player當下踩的階梯是哪個,所以要宣告遊戲物件currentFloor來記錄,
    無論是Normal或是Nails階梯都要將它紀錄下來,所以要在OnCollisionEnter2D方法裡判斷階梯的判斷句裡加上
currentFloor = other.gameObject;
  • 接著還得判斷Player是否撞到天花板,所以要幫天花板加一個tag
    https://ithelp.ithome.com.tw/upload/images/20220921/20152411gweIlyGC3E.jpg
    方程式的部分,OnCollisionEnter2D方法這邊還得加上else if的判斷式,如果Player撞到的是天花板就輸出"撞到天花板",並將該階梯的碰撞功能取消掉,此時就可以用昨天學到的GetComponent,要記得設定成enabled=false(代表要取消該功能)。
else if(other.gameObject.tag == "Ceiling") 
    { 
        Debug.Log("撞到天花板"); 
        currentFloor.GetComponent<BoxCollider2D>().enabled = false;
    } 

存檔完之後就可以試玩發現...當Player撞到Ceiling時不會一直卡在那邊,會直接穿透階梯墜落↓


心得

之前玩這款遊戲的時候沒怎麼注意到這細微的設計,遊戲開發者要去觀察到使用者在玩遊戲時會不會有畫面上的不完美等等,經過今天讓我了解到開發遊戲要非常注重細節。

  • 參考網址:https://www.youtube.com/watch?v=nPW6tKeapsM&ab_channel=GrandmaCan-%E6%88%91%E9%98%BF%E5%AC%A4%E9%83%BD%E6%9C%83
  • 音效、圖片 : 遊戲素材
    (素材由安德斯提供,感謝大大/images/emoticon/emoticon41.gif)

上一篇
【Day8】老菜雞學下樓梯遊戲之生成、移動階梯-Unity Instantiate&GetComponent&Destroy應用
下一篇
【Day10】老菜雞學下樓梯遊戲之碰撞方向判斷+法向量簡介(Unity point&normal)
系列文
老菜雞挑戰30天學爆Unity&C#會成功嗎?...30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言