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

完整代码 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class CoinColoneManager : MonoBehaviour
{// 这个脚本用来检测金币触发区,一旦触发就在前方指定位置克隆金币// 首先做触发检测 OnEnterTrigger(), // 用克隆函数 开始克隆5个金币在指定坐标上public GameObject CoinMuban; // 金币的模板对象,用于克隆生成新的金币public GameObject CoinPoint01; // 第一个金币生成点public GameObject CoinPoint02; // 第二个金币生成点public GameObject CoinParent; // 用于管理克隆出的金币对象的父对象,方便统一管理private void Start(){// 初始化代码可以放在这里}private void OnCollisionEnter(Collision collision){// 当物体发生碰撞时调用此方法if (collision.gameObject.name == "CollRoad1"){// 如果玩家碰到了名为 "CollRoad1" 的碰撞器Debug.Log("玩家碰到了列车01碰撞器,开始克隆金币");CloneCoin(CoinPoint01); // 在第一个生成点克隆金币}if (collision.gameObject.name == "Collider02"){// 如果玩家碰到了名为 "Collider02" 的碰撞器CloneCoin(CoinPoint02); // 在第二个生成点克隆金币Debug.Log("玩家碰到了列车02碰撞器,开始克隆金币2");}}void CloneCoin(GameObject TempObj){// 这个函数负责克隆金币for (int i = 0; i < 8; i++){// 计算每个金币的位置,z 坐标每次增加 2,确保金币在 z 轴上均匀分布Vector3 TempPos = new Vector3(TempObj.transform.position.x, TempObj.transform.position.y, TempObj.transform.position.z + i * 2);         // 克隆金币对象,并将其父对象设置为 CoinParentGameObject.Instantiate(CoinMuban, TempPos, Quaternion.identity, CoinParent.transform);}}
}

代码详解

1. 引入必要的命名空间

csharp

复制

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

这部分代码引入了Unity开发中常用的命名空间,确保我们可以使用Unity提供的各种类和方法。

2. 定义 CoinColoneManager 类

csharp

复制

public class CoinColoneManager : MonoBehaviour
{// 这个脚本用来检测金币触发区,一旦触发就在前方指定位置克隆金币// 首先做触发检测 OnEnterTrigger(), // 用克隆函数 开始克隆5个金币在指定坐标上public GameObject CoinMuban; // 金币的模板对象,用于克隆生成新的金币public GameObject CoinPoint01; // 第一个金币生成点public GameObject CoinPoint02; // 第二个金币生成点public GameObject CoinParent; // 用于管理克隆出的金币对象的父对象,方便统一管理
  • CoinColoneManager 类继承自 MonoBehaviour,这是Unity中所有脚本的基类。

  • CoinMuban:金币的模板对象,用于克隆生成新的金币。

  • CoinPoint01 和 CoinPoint02:两个预设的生成点,分别用于在不同位置生成金币。

  • CoinParent:用于管理克隆出的金币对象的父对象,方便统一管理。

3. Start 方法

csharp

复制

private void Start()
{// 初始化代码可以放在这里
}

Start 方法在脚本第一次激活时调用,通常用于初始化操作。在这个例子中,我们没有在 Start 方法中添加任何代码。

4. OnCollisionEnter 方法

csharp

复制

private void OnCollisionEnter(Collision collision)
{// 当物体发生碰撞时调用此方法if (collision.gameObject.name == "CollRoad1"){// 如果玩家碰到了名为 "CollRoad1" 的碰撞器Debug.Log("玩家碰到了列车01碰撞器,开始克隆金币");CloneCoin(CoinPoint01); // 在第一个生成点克隆金币}if (collision.gameObject.name == "Collider02"){// 如果玩家碰到了名为 "Collider02" 的碰撞器CloneCoin(CoinPoint02); // 在第二个生成点克隆金币Debug.Log("玩家碰到了列车02碰撞器,开始克隆金币2");}
}
  • OnCollisionEnter 方法在物体发生碰撞时调用。

  • 通过判断碰撞对象的名称,确定玩家碰到了哪个碰撞器。

  • 如果玩家碰到了 CollRoad1 或 Collider02,则调用 CloneCoin 方法,在指定位置生成金币。

5. CloneCoin 方法

csharp

复制

void CloneCoin(GameObject TempObj)
{// 这个函数负责克隆金币for (int i = 0; i < 8; i++){// 计算每个金币的位置,z 坐标每次增加 2,确保金币在 z 轴上均匀分布Vector3 TempPos = new Vector3(TempObj.transform.position.x, TempObj.transform.position.y, TempObj.transform.position.z + i * 2);         // 克隆金币对象,并将其父对象设置为 CoinParentGameObject.Instantiate(CoinMuban, TempPos, Quaternion.identity, CoinParent.transform);}
}
  • CloneCoin 方法用于克隆金币。

  • for 循环用于生成8个金币。

  • TempPos 计算每个金币的位置,z 坐标每次增加 2,确保金币在 z 轴上均匀分布。

  • GameObject.Instantiate 方法用于克隆金币对象,并将其父对象设置为 CoinParent

总结

通过这个简单的脚本,我们实现了在玩家碰到特定碰撞器时,在指定位置生成金币的功能。代码结构清晰,逻辑简单,适合初学者学习和理解。希望这篇文章能帮助你更好地理解Unity中的碰撞检测和对象克隆。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/56044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何打包和分发 Python 应用程序

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 所有使用包管理器&#xff08;例如 pip&#xff09;下载的 Python 库&#xff08;即应用程序包&#xff09;都是使用专门执行此任务…

rootless模式下istio ambient鉴权策略

环境说明 rootless模式下测试istio Ambient功能 四层鉴权策略 这里四层指的是网络通信模型的第四层&#xff0c;主要的传输协议为TCP和UDP。 用于限制服务间的通信&#xff0c;比如下面的策略应用于带有 app: productpage 标签的 Pod&#xff0c; 并且仅允许来自服务帐户 clus…

js动态生成二维码

html&#xff1a; <script type"text/javascript" src"js/qrcode.min.js"></script>&#xff08;资源里可下载&#xff09; <div class"tan_ma" style"width:100%; height:100%; position:fixed; left:0; top:0; backgrou…

云计算第四阶段: cloud二周目 07-08

cloud 07 一、k8s服务管理 创建服务 # 资源清单文件 [rootmaster ~]# kubectl create service clusterip websvc --tcp80:80 --dry-runclient -o yaml [rootmaster ~]# vim websvc.yaml --- kind: Service apiVersion: v1 metadata:name: websvc spec:type: ClusterIPselector…

速盾:免费cdn加速节点是什么?

免费CDN加速节点是指一种提供免费的内容分发网络&#xff08;CDN&#xff09;服务的网络节点。CDN是一种通过将网站的静态内容分布到全球各个节点上&#xff0c;从而加快网站访问速度的技术。免费CDN加速节点是免费提供这种服务的节点&#xff0c;在全球范围内分布着许多这样的…

ChatTTS在Windows电脑的本地部署与远程生成音频详细实战指南

文章目录 前言1. 下载运行ChatTTS模型2. 安装Cpolar工具3. 实现公网访问4. 配置ChatTTS固定公网地址 前言 本篇文章主要介绍如何快速地在Windows系统电脑中本地部署ChatTTS开源文本转语音项目&#xff0c;并且我们还可以结合Cpolar内网穿透工具创建公网地址&#xff0c;随时随…

面试头棒-Java如何判断两个对象是否相等

在Java中&#xff0c;判断两个对象是否相等通常涉及两个层面的比较&#xff1a;引用相等&#xff08;也称为身份相等&#xff09;和内容相等&#xff08;也称为值相等&#xff09;。 引用相等&#xff08;Identity Equality&#xff09;&#xff1a; 使用 运算符。如果两个引…

react里实现左右拉伸实战

封装组件&#xff1a; 我自己写的一个简单的组件&#xff0c;可能有bug。不想自己写&#xff0c;建议用第三方库实现。 新建一个resizeBox.tsx文件写上代码如下&#xff1a; import React, { ReactNode, useState, useEffect, useRef } from react; import styles from &quo…

【中危】Oracle TNS Listener SID 可以被猜测

一、漏洞详情 Oracle 打补丁后&#xff0c;复测出一处中危漏洞&#xff1a;Oracle TNS Listener SID 可以被猜测。 可以通过暴力猜测的方法探测出Oracle TNS Listener SID&#xff0c;探测出的SID可以用于进一步探测Oracle 数据库的口令。 建议解决办法&#xff1a; 1. 不应该使…

大数据治理的关键技术:构建稳固的数据基石

在这个信息爆炸的时代&#xff0c;数据已经成为企业最宝贵的资产之一。然而&#xff0c;随着数据量的爆炸性增长&#xff0c;如何有效治理这些数据成为了一个巨大的挑战。今天&#xff0c;我们就来聊聊大数据治理的关键技术&#xff0c;看看如何构建一个稳固的数据基石&#xf…

【某农业大学计算机网络实验报告】实验四 路由信息协议RIP

实验目的&#xff1a; 1&#xff0e;深入了解RIP协议的特点和配置方法&#xff1a;通过此次实验&#xff0c;掌握RIP协议作为一种动态路由协议的基本工作原理&#xff0c;了解其距离向量算法的核心概念&#xff0c;以及如何在网络设备上配置RIP协议&#xff1b; 2.验证RIP协议…

基于微信小程序的电影交流平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【Next.js 项目实战系列】02-创建 Issue

原文链接 CSDN 的排版/样式可能有问题&#xff0c;去我的博客查看原文系列吧&#xff0c;觉得有用的话&#xff0c;给我的库点个star&#xff0c;关注一下吧 上一篇【Next.js 项目实战系列】01-创建项目 创建 Issue 配置 MySQL 与 Prisma​ 在数据库中可以找到相关内容&…

Java项目-基于Springboot的招生管理系统项目(源码+说明).zip

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

智联云采 SRM2.0 testService SQL注入漏洞复现

0x01 产品简介 智联云采是一款针对企业供应链管理难题及智能化转型升级需求而设计的解决方案,针对企业供应链管理难题,及智能化转型升级需求,智联云采依托人工智能、物联网、大数据、云等技术,通过软硬件系统化方案,帮助企业实现供应商关系管理和采购线上化、移动化、智能…

求助,宠物空气净化器该怎么选?双十一有什么推荐购买的吗?

今晚就要付双十一尾款了&#xff0c;拖延症晚期的我还没做什么功课。本来不打算消费的&#xff0c;看了眼购物车&#xff0c;之前想买的宠物空气净化器降价了不少&#xff0c;不想错失这次优惠。 我家猫孩子之前不怎么掉毛的&#xff0c;连日常的梳毛我都经常偷懒&#xff0c;…

WordPress+Nginx 安装教程

WordPress 是一个开源的网站建设工具&#xff0c;可以用它来“快速”搭建个人博客&#xff0c;官网等等。它本身是用 php 开发的&#xff0c;本身部署不复杂&#xff0c;主要是需要一些配套的东西才能跑起来&#xff0c;网上的一些教程也是写的不清不楚&#xff0c;本文针对非 …

Centos7安装ZLMediaKit

https://github.com/ZLMediaKit/ZLMediaKit 一 获取代码 git clone https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init git submodule update --init 命令用于初始化和更新 Git 仓库中的子模块&#xff08;submodules&#xff09;。这个命令…

安全生产玩手机检测系统 玩手机识别系统 玩手机监测预警系统 使用 Python 和 OpenCV 库实现

在生产作业过程中&#xff0c;员工玩手机是一种极其危险的行为。它会分散员工的注意力&#xff0c;使其无法专注于工作任务。生产现场往往存在各种潜在的危险因素&#xff0c;如机械设备的运转、高空作业、化学品的使用等&#xff0c;一旦员工分心&#xff0c;就很容易忽视这些…

跨浏览器免费书签管理系统

随着互联网信息的爆炸式增长&#xff0c;如何有效管理我们日常浏览中发现的重要网页&#xff0c;成为了每个重度互联网用户的需求。一个跨平台的书签管理网站能够帮助用户在不同设备之间无缝同步和管理书签。本文将分享如何使用 Python 和 SQLite 构建一个简单、易于维护的跨平…