iT邦幫忙

2025 iThome 鐵人賽

0
自我挑戰組

從零開始做出我的第一款 Unity 遊戲系列 第 16

DAY16-如何讓遊戲結束(1)

  • 分享至 

  • xImage
  •  

要繞遊戲結束有兩種情況:
1.當身體碰到牆
2.當身體碰到自己的身體
我們依序處理這兩種狀況!

當身體碰到牆
要將四面牆都加讓碰撞器
將四面牆都框起來 → 到inspector最下面按add component → 選擇box collider 2D → 打開is trigger
https://ithelp.ithome.com.tw/upload/images/20251020/20178853HtBHvLRBaS.png
按inspector下方的tag,新增Obstacle的標籤 → 將四面牆都框起來 → tag的部分勾選Obstacle
設定好就打開Snack的腳本,並輸入以下完整程式碼:

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;

public class Snack : MonoBehaviour
{
    Vector3 direction;
    public float speed;
    public Transform bodyPrefab;

    public List<Transform> bodies = new List<Transform>();
    void Start()
    {

        Time.timeScale = speed;
        bodies.Add(transform);
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.W))
        {
            Debug.Log("W");
            direction = Vector3.up;
        }
        if (Input.GetKeyDown(KeyCode.A))
        {
            Debug.Log("A");
            direction = Vector3.left;
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            Debug.Log("S");
            direction = Vector3.down;
        }

        if (Input.GetKeyDown(KeyCode.D))
        {
            Debug.Log("D");
            direction = Vector3.right;
        }


    }
    private void FixedUpdate()
    {
        for(int i = bodies.Count - 1; i > 0; i--)
        {
            bodies[i].position = bodies[i - 1].position;
        }
        transform.Translate(direction);

    }
    private void OnTriggerEnter2D(Collider2D collision)
    {

        if (collision.CompareTag("Food"))
        {

            bodies.Add(Instantiate(bodyPrefab
            , transform.position
            , Quaternion.identity));

        }

        if (collision.CompareTag("Obstacle"))
        {
            Debug.Log("game over!");
            transform.position = Vector3.zero;
            direction = Vector3.zero;

            for (int i = 1; i < bodies.Count; i++)
            {
                Destroy(bodies[i].gameObject);

            }
            bodies.Clear();
            bodies.Add(transform);
        }
    }
}

上一篇
DAY15-讓貪吃蛇變長
下一篇
DAY17-如何讓遊戲結束(2)
系列文
從零開始做出我的第一款 Unity 遊戲21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言