Unity制作 小球吃金币 游戏

工程源文件下载地址-百度网盘

1. 新建一个项目

Unity制作 小球吃金币 游戏

2. 新建一个平面对象

Unity制作 小球吃金币 游戏

Unity制作 小球吃金币 游戏

3. 新建一个材质球

Unity制作 小球吃金币 游戏

为材质球设置颜色

Unity制作 小球吃金币 游戏

5. 将材质球拖拽赋值给平面

Unity制作 小球吃金币 游戏

6. 创建立方体对象,拉伸至平面宽度

Unity制作 小球吃金币 游戏

7. 再复制三个立方体、调整位置、添加材质,用四个调整过的立方体将平面围起来

Unity制作 小球吃金币 游戏

8. 创建一个球体(游戏的主角)

Unity制作 小球吃金币 游戏

9. 创建一个圆柱体并调整为金币形状、竖着摆放在桌面上

Unity制作 小球吃金币 游戏

10. 创建一个材质球,取金色,并赋值给金币

Ctrl D复制多个金币(共10个),调整位置,围绕小球布局。

Unity制作 小球吃金币 游戏

11. 创建一个空对象,将所有金币放到空对象中,以便统一管理(立方体也是)

Unity制作 小球吃金币 游戏

12. 为金币添加脚本,实现自动旋转

Unity制作 小球吃金币 游戏

Unity制作 小球吃金币 游戏

金币的自转脚本 rorate.cs(将脚本手动拖拽挂载到每一个金币上)

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

public class rorate : MonoBehaviour
{
    void Start()
    {
    }
    void Update()
    {
        this.transform.Rotate(Vector3.right, Space.Self);//自转
    }
}

13. 为小球添加刚体组件(检查器:添加组件→Physics→Rigidbody)

Unity制作 小球吃金币 游戏

14. 为小球添加脚本,实现通过键盘WSAD、↑↓←→控制小球移动

此时小球碰到金币会弹开

Unity制作 小球吃金币 游戏

小球的移动脚本 move.cs

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

public class move : MonoBehaviour
{
    Vector3 mPrevPos = Vector3.zero;
    Vector3 mPosDelta = Vector3.zero;
    // Start is called before the first frame update
    void Start()
    {
    }

    void Update()
    {
        float ws = Input.GetAxis("Vertical");  //按'W''S'键返回一个[-1,1]的值
        float ad = Input.GetAxis("Horizontal");  //按'A''D'键返回一个[-1,1]的值
        this.transform.Translate(Vector3.forward * ws * Time.deltaTime * 7, Space.World);  //前后移动
        transform.Translate(Vector3.right * ad * Time.deltaTime * 7, Space.World);  //左右移动
    }
}

15. 为每一个金币设置自定义的标签(coin),作为碰撞检测的判断条件

Unity制作 小球吃金币 游戏

新加自定义标签:

Unity制作 小球吃金币 游戏

16. 碰撞检测。为小球添加脚本实现”小球碰到金币 -> 金币消失”(即小球吃金币)功能

小球吃金币(小球碰到金币后金币消失,且层级中的金币对象也消失):

Unity制作 小球吃金币 游戏

小球的碰撞检测脚本 collision.cs(拖拽挂载给小球)

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

public class collision : MonoBehaviour
{
    private Rigidbody rd;
    public int force=5;

    void Start () {
        rd = GetComponent ();
    }
    void Update () {
        float h = Input.GetAxis ("Horizontal");
        float v = Input.GetAxis ("Vertical");
        rd.AddForce (new Vector3 (h, 0, v) * force);
    }
    //碰撞检测
    void OnCollisionEnter(Collision collision){
        if (collision.collider.tag == "coin") {
            Destroy (collision.collider.gameObject);
        }
    }
}

17. 触发检测(与16 碰撞监测二选一)

全选金币,勾选”是触发器”,即触发机制的开关

Unity制作 小球吃金币 游戏

添加脚本,实现小球触到金币后,金币消失,且层级中的金币也对应消失

Unity制作 小球吃金币 游戏

小球的触发检测脚本 trigger.cs(拖拽挂载给小球)

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

public class trigger : MonoBehaviour
{
    private Rigidbody rd;
    public int force=5;
    void Start () {
        rd = GetComponent ();
    }
    void Update () {
        float h = Input.GetAxis ("Horizontal");
        float v = Input.GetAxis ("Vertical");
        rd.AddForce (new Vector3 (h, 0, v) * force);
    }
    //触发检测
    void OnTriggerEnter(Collider collider){
        if (collider.tag == "coin") {
            Destroy (collider.gameObject);
        }
    }
}

18. 为相机添加脚本,实现相机跟随小球

脚本参数 target赋值为小球,即跟随对象为小球

Unity制作 小球吃金币 游戏

相机跟随小球:

Unity制作 小球吃金币 游戏

相机脚本 follow.cs(脚本拖拽挂载给相机,脚本中的变量”target”赋值为小球)

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

public class follow : MonoBehaviour
{
    public Transform target;
    private Vector3 offset;

    void Start () {
        offset = transform.position - target.position;
    }

    void Update () {
        transform.position = target.position + offset;
    }
}

19. 添加实时分数文本(TextMeshPro)

Unity制作 小球吃金币 游戏

修改颜色、大小、初始内容。

Unity制作 小球吃金币 游戏

20. 完善小球collision.cs脚本实现实时修改得分

Unity制作 小球吃金币 游戏
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class collision : MonoBehaviour
{
    private Rigidbody rd;
    public int force=5;
    private int score_num = 0;
    public GameObject score;

    void Start () {
        rd = GetComponent ();
    }
    void Update () {
        float h = Input.GetAxis ("Horizontal");
        float v = Input.GetAxis ("Vertical");
        rd.AddForce (new Vector3 (h, 0, v) * force);
    }
    //碰撞检测
    void OnCollisionEnter(Collision collision){
        if (collision.collider.tag == "coin") {
            score_num++;
            score.GetComponent().text = "score: " + score_num.ToString ();
            Destroy (collision.collider.gameObject);
        }
    }
}

21. 添加游戏胜利文本并修改颜色、内容

Unity制作 小球吃金币 游戏

22. 完善小球collision.cs脚本,实现吃到10个金币时文本出现(未激活 -> 激活)

Unity制作 小球吃金币 游戏

修补collision.cs 代码(最终版):

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

public class collision : MonoBehaviour
{
    private Rigidbody rd;
    public int force=5;
    private int score_num = 0;
    public GameObject score;
    public GameObject win;

    void Start () {
        rd = GetComponent ();
        win.SetActive (false);
    }
    void Update () {
        float h = Input.GetAxis ("Horizontal");
        float v = Input.GetAxis ("Vertical");
        rd.AddForce (new Vector3 (h, 0, v) * force);
    }
    //碰撞检测
    void OnCollisionEnter(Collision collision){
        if (collision.collider.tag == "coin") {
            score_num++;
            score.GetComponent().text = "score: " + score_num.ToString ();
            if (score_num == 10) {
                win.SetActive (true);
            }
            Destroy (collision.collider.gameObject);
        }
    }
}

23. 发布游戏

文件菜单栏 -> 构建和运行

选择游戏生成位置文件夹

Unity制作 小球吃金币 游戏

选择文件夹,片刻后发布成功

24. 运行游戏

进入游戏生成的文件夹,找到对应的exe文件,打开即可全屏进行游戏

Unity制作 小球吃金币 游戏

启动页

Unity制作 小球吃金币 游戏

游戏运行:

Unity制作 小球吃金币 游戏

吃掉全部金币胜利:

Unity制作 小球吃金币 游戏

Original: https://blog.csdn.net/weixin_43895819/article/details/125221335
Author: 假以时日♪
Title: Unity制作 小球吃金币 游戏

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/794103/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球