2024-05-29|閱讀時間 ‧ 約 26 分鐘

2024 虛擬實境 x 人因設計 12Unity 保齡球遊戲拆解&製作

    上週的作業保齡球規則

    Student A

    角色:玩家1、玩具球、娃娃A、娃娃B、娃娃C

    規則:打擊娃娃,要贏得遊戲需要使用玩具球打擊到娃娃,共有三次機會可以打擊,全部娃娃都有被打擊到就能贏得勝利,如三次機會中只打擊到其中一隻/兩隻娃娃,另外沒被打擊到的娃娃會消失,遊戲立即結束!

    Student B

    角色(互動物件):球、球瓶1、球瓶2、球瓶3

    規則:擊倒球瓶1、2就贏了,擊倒球瓶3會回到原點

    Student C

    互動物件:球、球瓶1~10

    規則:有兩次機會,每次球丟出跑完球道後,會跑回原點,擊倒球瓶1~10就贏。

    Student D

    發射端 飛彈 球體.......被撞端 瓶狀物 生物

    勝利條件 全倒

    場地 梯形

    以下為可能增加

    直接結束條件 發射端物品用完,失敗條件 還有剩下被撞端的物品

    Student E

    角色:玩家A(球桿)、母球、子球A、子球B、子球C

    規則:遊戲名稱叫霹靂迷你撞球,想要贏遊戲需用球桿撞擊母球,母球將所有子球打進洞裡,你就贏了,如果母球進洞則會翻桌


    基本上保齡球遊戲可分為兩大部分(拿球那方、還有被擊物那方).

    那我們開始~

    準備一個地板、一顆球、一支球瓶、還有剛剛做好視角控制的椅子~~

    新建一個腳本叫發射器 ,這邊取名Shooter

    打開腳本,先宣告一個物體變數還有發射的瞬間力

    public GameObject Bowling;

    public float Power = 1.0f;

    在下面寫一個關於射出球的方法

    void ShootProjectile()

    {

    // 創建一個新的物件,位置和方向與攝影機相同

    GameObject projectile = Instantiate(Bowling, transform.position, transform.rotation);

    Rigidbody rb = projectile.GetComponent<Rigidbody>();

    }

    // 確保該物件有 Rigidbody 組件

    if (rb != null)

    {

    // 給物件一個向前的力

    rb.AddForce(transform.forward * Power);

    }


    然後再Update 裡面寫上
    if (Input.GetMouseButtonUp(2))

    {

    ShootProjectile();

    }

    這樣就可以順利發射球出來了

    這時候我們再新增一個箭頭,讓互動體驗更好一點。

    宣告公開變數 箭頭
    public GameObject Arrow;

    那箭頭在一開始是不會跑出來,除非我按住滑鼠中鍵不放

    void Start()

    {

    Arrow.SetActive(false);

    }

    -----------------

    接著在Update新增程式碼,因為要一直偵測是不是有按鍵按下,所以必須寫在此欄。

    void Update()

    {

    if (Input.GetMouseButton(2)) //如果持續按下滑鼠中鍵

    {

    Arrow.SetActive(true); //箭頭跑出來

    }

    if (Input.GetMouseButtonUp(2)) //如果放開滑鼠中鍵

    {

    Arrow.SetActive(false); //箭頭消失

    ShootProjectile(); //射出球球

    }

    }

    MouseButton(0)(1)(2)(3)(4)(5)

    (0)滑鼠左鍵 (1)滑鼠右鍵 (2) 滑鼠中鍵

    (3)特殊鍵側邊01 (4)特殊鍵側邊02 (5)特殊鍵側邊03


    Input.GetMouseButton 這個可以背一下

    這組合我知道的有三種

    GetMouseButton、GetMouseButtonDown、GetMouseButtonUp

    GetMouseButton 是按鈕按下持續

    GetMouseButtonDown 是按鈕按下的那一下,就那一下(要再有反應需放開後再按下)

    GetMouseButtonUp 是按鈕放開的那一下,就放開那一下

    ​那這是球發射部分,等等就來處理球瓶的Trigger


    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.