一.最终效果:
unity视频
二.游戏概述
游戏核心玩法围绕角色在场景内的探索与金币收集展开。玩家控制的角色能够在场景中自由移动,而场景内分布着木桶和宝箱等元素。玩家需要开启这些木桶和宝箱,从中获取金币。当成功收集到 3 枚金币时,游戏判定玩家胜利,并播放胜利特效,给予玩家反馈。本文将基于《印象 Unity 2020 游戏开发基础与实战》中的实例.
三.项目资源
场景和角色资源:Ultimate Low Poly Dungeon | 3D 地下城 | Unity Asset Store
音乐资源:Retro Games Sound FX | 音频 音效 | Unity Asset Store
Free Fantasy Adventure Music Pack | 交响乐 音乐 | Unity Asset Store
特效资源:Procedural fire | 火焰与爆炸 | Unity Asset Store
这些资源为游戏提供了丰富的视觉和听觉素材,极大地增强了游戏的沉浸感
四.详细操作步骤
1.项目准备:
(1)下载资源
从上述提供的 Unity Asset Store 链接进入对应页面,点击下载按钮,将所需的场景、角色、音乐和特效资源下载到本地。
(2)导入资源
打开 Unity 编辑器,依次点击 “Assets”->“Import Package”->“Custom Package”,选择下载好的资源文件进行导入。导入过程中,根据提示选择需要导入的文件内容,确保资源完整导入项目。
(3)双击图示中的项目(项目场景内包含一个角色)
在项目面板中找到包含角色的项目场景文件,双击打开该场景。此时,场景内将显示一个角色,为后续游戏开发操作提供基础。
2.播放背景音乐:
(1)创建一个空物体BGMplayer。添加Audio source组件。
在 Hierarchy 面板中,右键点击空白处,选择 “Create Empty”,创建一个新的空物体,并将其命名为 “BGMplayer”。 选中 “BGMplayer” 物体,在 Inspector 面板中点击 “Add Component”,搜索并添加 “Audio Source” 组件。
(2)将Free Fantasy Adventure Music Pack/挂载到组件上面。
在 “Audio Source” 组件的 “AudioClip” 属性处,展开 “Free Fantasy Adventure Music Pack” 文件夹,选择合适的音乐文件进行挂载。
3.创建金币特效:
(1)创建名为 “CoinControl” 的 C# 脚本。
在 Project 面板中,右键点击创建 C# 脚本,命名为 “CoinControl”。该脚本将用于控制金币的生成、显示以及与玩家的交互逻辑
代码内容:
(2)将指定预制件拖入场景并命名为 “Coin”,挂载 “CoinControl” 脚本,并为其添加 Audio Source 组件 。
在 Project 面板中找到金币的预制件(可能位于导入的资源文件夹内),将其拖入 Hierarchy 面板中的场景内,并命名为“Coin”。选中 “Coin” 物体,在 Inspector 面板中点击 “Add Component”,先添加之前创建的 “CoinControl” 脚本,再添加 “Audio Source” 组件。“Audio Source” 组件用于播放金币相关的音效,如收集金币时的音效。
4.编写宝箱脚本:(可写可不写)
(1)在项目面板中创建金币预制件,删除层级面板中的 “Coin” 物体。
(2)创建名为 “ChestControl” 的 C# 脚本,关联制作好的金币预制件和玩家角色,用于实现宝箱与金币、玩家之间的交互逻辑:当宝箱与角色的距离小于 1.5m 时,角色可进行相关操作。当宝箱与角色的距离小于 2m 时,随机产生一枚金币,同时播放吃金币音效;当获得金币数量达到或等于 3 时,播放游戏胜利特效。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CoinControl : MonoBehaviour
{
public GameObject effect;// 特效
public GameObject player;
public static int count = 0;//金币数量
public AudioSource audiosourse;
// Start is called before the first frame update
void Start()
{
audiosourse=GetComponent<AudioSource>();
Debug.Log("player:"+player.gameObject);
}
// Update is called once per frame
void Update()
{
float dis=Vector3.Distance(transform.position, player.transform.position);
if (dis < 1.5f)
{
count++;
audiosourse.Play();
Debug.Log("获得金币,当前的金币为:" + count);
if (count > 3)
{
GameObject go = Instantiate(effect, transform.position, transform.rotation);
Destroy(go, 8f);//8s后删除特效
}
Destroy(this);//删除脚本
Destroy(gameObject, 0.3f);//销毁自身
}
}
}
五.结语
通过以上详细步骤,你可以逐步完成基于 Unity 的金币收集游戏的开发,实现角色在场景中自由走动、收集金币、触发特效等丰富的游戏功能。希望本教程能帮助你顺利开启游戏开发之旅,创造出更多精彩有趣的游戏作品。