当前位置: 首页 > article >正文

【跑酷项目02】实现触发并在前方克隆金币

 

大家好,我是你们的游戏开发小助手!今天给大家带来一个超实用的跑酷游戏开发技巧——如何在玩家走到特定区域时,在前方克隆金币!🎉 这个功能可以让玩家在跑酷过程中不断获得奖励,增加游戏的趣味性和挑战性哦!

📌 准备工作

  1. Unity 2021.3.0f1 或更高版本

  2. C# 基础知识

  3. Unity 编辑器 基础操作

📌 实现步骤

1. 创建金币模板

首先,我们需要在Unity中创建一个金币的模板对象。这个对象将作为我们克隆的基础。

  1. 在场景中创建一个3D物体,比如一个 Sphere,并将其命名为 CoinMuban

  2. 为这个 CoinMuban 添加一个 Mesh Renderer 组件,并赋予它一个漂亮的材质,让它看起来像金币。

  3. 将 CoinMuban 拖拽到 Assets 文件夹中,创建一个预制体(Prefab)。

2. 创建克隆点

接下来,我们需要在场景中创建两个克隆点,用于指定金币克隆的位置。

  1. 在场景中创建两个空物体(GameObject),分别命名为 CoinClonePoint01 和 CoinClonePoint02

  2. 将这两个物体放置在你希望金币出现的位置。

3. 编写脚本

现在,我们开始编写C#脚本,实现金币的克隆功能。

 

完整代码 

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

public class CoinColoneManager : MonoBehaviour
{
    // 这个脚本用来检测金币触发区,一旦触发就在前方指定位置克隆金币
    // 首先做触发检测 OnEnterTrigger(), // 用克隆函数 开始克隆5个金币在指定坐标上

    public GameObject MainRole; // 主角色对象,用于检测碰撞
    public GameObject CoinMuban; // 金币模板对象,用于克隆
    public GameObject CoinParent; // 金币的父对象,用于组织克隆的金币
    public GameObject CoinClonePoint01; // 第一个克隆点,用于指定克隆金币的位置
    public GameObject CoinClonePoint02; // 第二个克隆点,用于指定克隆金币的位置

    private void OnCollisionEnter(Collision collision)
    {
        // 脚本所在的物体发生碰撞了,开始执行我这个函数
        if (collision.transform.gameObject.name == "CollRoad1")
        {
            // 如果碰撞的对象是 "CollRoad1",则在第一个克隆点克隆金币
            CloneCoin(CoinClonePoint01, 8); // 传递第一个克隆点的变量和克隆数量过去(形参传递用法)
        }
        if (collision.transform.gameObject.name == "CoinCloneCollider02")
        {
            // 如果碰撞的对象是 "CoinCloneCollider02",则在第二个克隆点克隆金币
            CloneCoin(CoinClonePoint02, 10); // 传递第二个克隆点的变量和克隆数量过去
        }
    }

    void CloneCoin(GameObject TempCoinPoint, int I)
    {
        // 这个函数用于克隆金币
        // TempCoinPoint: 克隆点的位置
        // I: 需要克隆的金币数量
        for (int i = 0; i < I; i++)
        {
            // 计算每个克隆金币的位置,位置在克隆点的Z轴上依次增加2个单位
            Vector3 TempClonePos = new Vector3(
                TempCoinPoint.transform.position.x, 
                TempCoinPoint.transform.position.y, 
                TempCoinPoint.transform.position.z + i * 2
            );

            // 使用Instantiate函数克隆金币,并将其父对象设置为CoinParent
            GameObject temp = GameObject.Instantiate(
                CoinMuban, 
                TempClonePos, 
                Quaternion.identity, 
                CoinParent.transform
            );
        }
    }
}
4. 设置脚本参数
  1. 将 CoinColoneManager 脚本附加到场景中的任意一个物体上。

  2. 在Unity编辑器中,将 MainRole 变量拖拽到主角色对象上。

  3. 将 CoinMuban 变量拖拽到金币模板预制体上。

  4. 将 CoinParent 变量拖拽到一个空物体上,用于组织克隆的金币。

  5. 将 CoinClonePoint01 和 CoinClonePoint02 变量分别拖拽到对应的克隆点对象上。

5. 测试游戏
  1. 运行游戏,让主角色走到 CollRoad1 和 CoinCloneCollider02 区域。

  2. 观察金币是否在指定位置成功克隆!

📌 小贴士

  • 你可以根据需要调整克隆点的位置和克隆数量。

  • 如果金币克隆后没有立即出现,可以检查一下克隆点的位置是否正确。

📌 总结

通过这个简单的教程,你已经学会了如何在跑酷游戏中实现金币的克隆功能。这个功能不仅可以让玩家获得奖励,还能增加游戏的趣味性和挑战性。快去试试吧,让你的跑酷游戏更加精彩!🚀

如果你有任何问题或建议,欢迎在评论区留言哦!👇

代码解释:

  1. using 语句

    • using System.Collections; 和 using System.Collections.Generic; 是用于引入C#的标准库,用于处理集合等数据结构。

    • using UnityEngine; 是用于引入Unity的引擎库,包含了Unity开发所需的各种类和方法。

  2. public class CoinColoneManager : MonoBehaviour

    • 这是一个继承自 MonoBehaviour 的类,MonoBehaviour 是Unity中所有脚本的基类。

    • CoinColoneManager 是这个脚本的类名,你可以根据需要修改。

  3. public GameObject MainRole;

    • 这是一个公共变量,用于存储主角色对象。你可以通过Unity编辑器将主角色对象拖拽到这个变量上。

  4. public GameObject CoinMuban;

    • 这是一个公共变量,用于存储金币模板对象。你可以通过Unity编辑器将金币模板对象拖拽到这个变量上。

  5. public GameObject CoinParent;

    • 这是一个公共变量,用于存储金币的父对象。克隆的金币将被放置在这个父对象下,方便管理和组织。

  6. public GameObject CoinClonePoint01; 和 public GameObject CoinClonePoint02;

    • 这两个公共变量用于存储克隆点的位置。你可以通过Unity编辑器将克隆点对象拖拽到这些变量上。

  7. private void OnCollisionEnter(Collision collision)

    • 这是一个Unity内置的碰撞检测函数,当脚本所在的物体发生碰撞时,这个函数会被调用。

    • collision 参数包含了碰撞的相关信息。

  8. if (collision.transform.gameObject.name == "CollRoad1")

    • 这是一个条件判断语句,用于检测碰撞的对象是否是名为 "CollRoad1" 的游戏对象。

  9. CloneCoin(CoinClonePoint01, 8);

    • 调用 CloneCoin 函数,传递第一个克隆点的位置和克隆数量(8个)。

  10. CloneCoin(GameObject TempCoinPoint, int I)

    • 这是一个自定义函数,用于克隆金币。

    • TempCoinPoint 是克隆点的位置。

    • I 是需要克隆的金币数量。

  11. for (int i = 0; i < I; i++)

    • 这是一个循环语句,用于克隆指定数量的金币。

  12. Vector3 TempClonePos = new Vector3(...)

    • 这是一个用于计算克隆金币位置的向量。每个金币的位置在Z轴上依次增加2个单位。

  13. GameObject.Instantiate(...)

    • 这是Unity的实例化函数,用于克隆对象。

    • CoinMuban 是克隆的模板对象。

    • TempClonePos 是克隆的位置。

    • Quaternion.identity 表示没有旋转。

    • CoinParent.transform 是克隆对象的父对象。

通过这些注释,初学者可以更好地理解代码的每一部分是如何工作的。


http://www.kler.cn/news/363874.html

相关文章:

  • 【python实战】利用代理ip爬取Alibaba海外版数据
  • 052_python基于Python高校岗位招聘和分析平台
  • Java每日面试题(前端Vue拓展)(day20)
  • 产品如何实现3D展示?具体步骤如下
  • 8轴/4轴的EtherCAT轴模块EIO24088G-V2及EIO16084G的使用(一):TwinCAT总线配置与使用
  • 基于泊松洞过程建模的异构蜂窝网络信干比增益与近似覆盖率分析
  • 编辑器加载与AB包加载组合
  • SQL注入原理、类型、危害与防御
  • 使用cmdline-tools安装Android SDK与NDK
  • 驱动开发系列20 - Linux Graphics Xorg-server 介绍
  • 在 Python 中使用 Tensorflow 时出错:google.protobuf
  • 汽车票预订系统:SpringBoot技术应用
  • OpenIPC开源FPV之Ardupilot配置
  • 爬虫实战练习
  • 第T7周:咖啡豆识别
  • 多模态大语言模型(MLLM)-Blip3/xGen-MM
  • 姿态估计(一)——过程记录与问题记录
  • Spring Boot 3 声明式接口:能否完全替代 OpenFeign?
  • 写在RAGFlow开源2万星标之际
  • vue3使用element-plus手动更改url后is-active和菜单的focus颜色不同步问题
  • JavaFx -- chapter03(多线程网络通信)
  • Linux——K8S的pod的调度
  • 类的创建、构造器、实例属性、实例方法
  • Java while语句练习 C语言的函数递归
  • node入门与npm
  • C++进阶-->继承(inheritance)