欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity制作《打地鼠》游戏思路详解

程序员文章站 2022-07-13 08:26:14
...

一、游戏效果

1. 地鼠在九个洞中随机出现
2. 用鼠标击打地鼠,被打中的地鼠闭上眼睛,0.5秒后消失

Unity制作《打地鼠》游戏思路详解
Unity制作《打地鼠》游戏思路详解

二、制作思路和步骤

1. 场景搭建和前期准备

(1) 新建文件夹存放所需素材
Unity制作《打地鼠》游戏思路详解
(2) 把ground和hole贴纸拖入场景组成map
Unity制作《打地鼠》游戏思路详解
(3) 调整main camera各项参数
Unity制作《打地鼠》游戏思路详解

2. 点击地鼠
目标:鼠标点击Gophers后,Gophers消失

(1) 将贴纸Gophers、Gophers_Beaten拖入场景并添加box collider 2D组件
Unity制作《打地鼠》游戏思路详解
(2) 编写程序S1加给Gophers

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

public class S1 : MonoBehaviour {

    public GameObject m_Prefab2;
	void Start () {
	}
	void OnMouseDown()
    {
        Instantiate(m_Prefab2, transform.position, Quaternion.identity);
        Destroy(gameObject);
    }
	
}

(3) 给Gophers、Gophers_Beaten添加Audio source组件,添加相对应音频
Unity制作《打地鼠》游戏思路详解
3. 地鼠被击中后的处理
目标:点击Gophers后Gophers_Beaten出现,出现0.5秒后自动消失

(1) 把Gophers_Beaten做成预制体
Unity制作《打地鼠》游戏思路详解
(2) 把Gophers_Beaten预制体拖入S1组件
Unity制作《打地鼠》游戏思路详解
(3) 编写代码S2,加给Gophers_Beaten

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

public class S2 : MonoBehaviour {

	void Start () {
        Destroy(gameObject, 0.5f);
	}

	void Update () {
		
	}
}

4. 地鼠随机出现

(1) 将Gophers做成预制体
Unity制作《打地鼠》游戏思路详解
(2) 创建空物体并命名为GreateTarget
Unity制作《打地鼠》游戏思路详解
(3) 编写代码GreatTarget并加给GreatTarget

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

public class CreateTarget : MonoBehaviour {

    public GameObject m_Target;
	void Start () {
        InvokeRepeating("Create", 0, 1);
	}
    void Create()
    {
        Vector3 pos = Vector3.zero;
        int id = 0;
        id = Random.Range(1, 10);
        if (id == 1)
            pos = new Vector3(0, 0, 0);
        if (id == 2)
            pos = new Vector3(2, 0, 0);
        if (id == 3)
            pos = new Vector3(4, 0, 0);
        if (id == 4)
            pos = new Vector3(0, 1, 0);
        if (id == 5)
            pos = new Vector3(2, 1, 0);
        if (id == 6)
            pos = new Vector3(4, 1, 0);
        if (id == 7)
            pos = new Vector3(0, 2, 0);
        if (id == 8)
            pos = new Vector3(2, 2, 0);
        if (id == 9)
            pos = new Vector3(4, 2, 0);
        Instantiate(m_Target, pos, Quaternion.identity);

    }
}

(4) 拖入Gophers预制体
Unity制作《打地鼠》游戏思路详解
(5)调整main camera和map参数,直到地鼠出现的位置合适
Unity制作《打地鼠》游戏思路详解

三、游戏BUG和总结

游戏BUG:
地鼠出现的位置是随机的,当一个位置出现地鼠后,相同位置还会再次出现地鼠,则会出现两个或多个地鼠重叠在一个位置的情况。正确游戏情境应该为某一位置出现地鼠后,此位置将不再调用CreateTarget函数,不再出现地鼠,直到玩家击打该处后,再正常调用CreateTarget函数。

总结:
通过制作此次游戏,我学会了box collider2D的应用场景和贴纸的层级关系,重温了预制体的制作和音频的添加,复习了onMouseDown、Destroy和随机出现等函数。

tips:

  1. 地鼠贴纸为2D,实现onMouseDown函数效果的前提是给贴纸添加box collider2D组件。
  2. 同一平面的贴纸有层级关系,为了避免ground遮住地鼠贴纸,将ground的Order in Layer参数改为0,两张地鼠贴纸改为1。