Unity 中实现一个碰撞体(Collider)管理类监测多个物体触发事件

Unity -- 碰撞的产生与监听 / 碰撞与触发的区别 从上往下分别是:碰撞编译器,是触发器,材质,碰撞中心(这个中心是可以被我们调整坐标移动的,如果不调整的话默认为游戏物体的中心坐标),碰撞半径,(胶囊碰撞器特有的胶囊高度和胶囊指向)函数里面的参数不需要我们去写,编译器会帮我们写的,这个参数承接的是当前脚本挂载的游戏物体a碰撞到的套在游戏物体b的碰撞体对象的信息对象,这个信息对象中存的是对应碰撞体对象的一系列信息。2.触发和碰撞检测不同的是,我们需要将两个发生碰撞的物体的其中一个的碰撞器组件的中的collider组件中的设为触发器选项打开。 阅读详情

通过脚本所挂载的物体名称来添加不同触发事件。

using UnityEngine;

/// <summary>
/// 碰撞体物体管理类
/// </summary>
public class ColliderManager_01 : MonoBehaviour
{
    private delegate void TriggerEvent(Collider other);
    private TriggerEvent enterEvent, stayEvent, exitEvent;

    // Start is called before the first frame update
    private void Awake()
    {
        enterEvent = null;
        stayEvent = null;
        exitEvent = null;
        switch (transform.name)
        {
            case "NoseBoxCollider":
                enterEvent = NoseBoxColliderEnter;
                stayEvent = NoseBoxColliderStay;
                exitEvent = NoseBoxColliderExit;
                break;
            case "PlayerCollider":
                enterEvent = BodyColliderEnter;
                stayEvent = BodyColliderStay;
                exitEvent = BodyxColliderExit;
                break;
            default:
                break;
        }
    }

    #region 触发事件调用
    private void OnTriggerEnter(Collider other)
    {
        if (enterEvent != null)
            enterEvent(other);
    }

    private void OnTriggerStay(Collider other)
    {
        if (stayEvent != null)
            stayEvent(other);
    }

    private void OnTriggerExit(Collider other)
    {
        if (exitEvent != null)
            exitEvent(other);
    }
    #endregion

    #region 鼻子上触发器的事件
    private void NoseBoxColliderEnter(Collider other)
    {
        if (other.name.Equals("HandTowel"))
        {
            //手中的毛巾触碰到鼻子
        }
    }
    private void NoseBoxColliderStay(Collider other)
    {

    }
    private void NoseBoxColliderExit(Collider other)
    {

    }
    #endregion

    #region 身体上触发器的事件
    private void BodyColliderEnter(Collider other)
    {
        if (other.tag.Equals("Stone"))
        {
            Debug.LogError("石头碰撞人了!!");
        }
    }
    private void BodyColliderStay(Collider other)
    {

    }
    private void BodyxColliderExit(Collider other)
    {

    }
    #endregion
}

Unity3D入门(十一):刚体碰撞事件和触发事件监测 Unity3D入门(九):刚体常用方法介绍AddForce()AddRelativeForce()FixedUpdate() AddForce() 1.作用 给刚体添加一个力,让刚体按 世界坐标系 进行运动,例如游戏中发射的子弹。 2.代码 Rigidbody.AddForce(Vector3,ForceMode); Vector3:力的方向和大小; ForceMode:力的模式[enum 类型]。 3.ForceMode 参数 类型为枚举类型,以什么样的方式添加力给刚体。 枚举值说明 Accelerati 阅读详情

相关推荐

Unity物理锁链断裂效果实现:基于QuickRopes插件的碰撞检测与动态分割

在游戏物理模拟中,刚体约束与碰撞检测是构建真实交互的基础技术。通过质点-弹簧模型与Verlet积分算法,物理引擎能够高效模拟绳索、锁链等柔性体的动态行为,其核心价值在于提升游戏的沉浸感与交互深度。在Unity开发中,原生关节系统虽然功能全面,但实现复杂的可破坏物理连接往往面临性能与稳定性的挑战。为此,开发者常借助专业物理插件来简化开发流程,其中碰撞检测与动态分割成为实现断裂效果的关键技术点。本文以QuickRopes插件为例,详细解析如何通过配置链节参数、编写断裂检测脚本,并结合碰撞冲量阈值判断,快速实现锁

weixin_33701564的博客 472

unity3d在2d游戏中同时拖动多个collider示例

unity3d在2d游戏中同时拖动多个collider,

Unity InputSystem 单击、双击与长按事件精准区分全攻略

在游戏开发中,输入事件处理是构建流畅人机交互的基础。其核心原理在于将原始输入信号转化为可识别的逻辑操作,传统轮询方式虽直观但效率较低。现代游戏引擎如Unity的新InputSystem采用事件驱动模型,通过动作(Action)、绑定(Binding)与交互(Interaction)三层结构,实现了高效解耦与跨平台支持。这套系统的技术价值在于提供了强大的灵活性与可定制性,允许开发者精细定义如点击、长按等复杂交互行为。然而,这也带来了新的挑战,例如在区分单击与双击事件时,若多个交互监听同一输入源,可能因条件重叠

weixin_33928137的博客 313

Unity3D 对一个物体多个碰撞体做调整

一个物体下,不一定只有一个碰撞体,本人在做一个项目的过程中,遇到了一个物体加了几十个至上百个碰撞体,如果想让碰撞体变成触发状态,不太可能一个一个的点过来,所以写了个脚本进行遍历的调整。 遇到的情况如下: 脚本如下:  BoxCollider[] col;  void Start () {         cleanAllColliders(this.transform);     }...

chenchen_fcj程序猿的博客 1万+

基于MRTK3在Pico 4上实现手势抓握与射线交互的完整指南

在虚拟现实与增强现实开发中,手势追踪与自然交互是提升沉浸感的核心技术。其原理是通过设备摄像头或传感器捕捉用户手部关键点数据,并将其映射为虚拟空间中的输入指令。这项技术的价值在于,它摆脱了传统控制器的束缚,允许用户以更直观、符合本能的方式与数字内容进行互动,极大地提升了培训、设计、娱乐等场景的体验真实感与操作效率。MRTK3作为微软推出的混合现实开发工具包,通过封装复杂的交互状态管理与事件系统,为开发者提供了构建此类高级交互的标准化框架。本文将结合Pico 4设备,深入解析如何利用MRTK3实现稳定的手势抓握

weixin_33690963的博客 310

Unity MRTK3手势交互开发:Pico VR抓取系统实现指南

手势交互是VR/AR应用中的核心交互范式,它通过识别用户手部姿态和动作,将自然肢体语言转化为数字指令。其原理基于计算机视觉与骨骼追踪技术,实时捕捉手部关键点并映射为预定义手势。这项技术的价值在于极大提升了沉浸感与直觉性,降低了交互学习成本,是构建下一代空间计算体验的基石。在应用场景上,手势交互广泛用于虚拟培训、三维设计、医疗模拟及娱乐游戏等领域。本文聚焦于Unity引擎与MRTK3框架,深入探讨如何为Pico VR设备实现稳定、流畅的手势抓取系统,涵盖从交互器配置、物理反馈优化到真机部署的全流程工程实践。

weixin_30561177的博客 509

Unity物理引擎实战:从掷骰子项目掌握刚体、碰撞与状态管理

物理引擎是现代游戏开发的核心技术之一,它通过模拟现实世界的物理规律,为虚拟物体赋予质量、速度、碰撞等属性,从而实现逼真的运动与交互效果。其底层原理基于牛顿力学与碰撞检测算法,通过刚体组件定义物体的物理属性,碰撞体组件处理物体间的接触与响应。在游戏开发中,物理引擎的价值在于能够高效、真实地模拟复杂的环境交互,极大地提升了游戏的沉浸感和可玩性。无论是角色移动、物体抛投还是场景破坏,都离不开物理引擎的支持。本文以Unity引擎中经典的“掷骰子”小项目为切入点,深入探讨如何通过配置刚体属性、施加随机力与扭矩、以及利

weixin_33795743的博客 427

基于Kinect与Unity的体感交互艺术展项开发全流程解析

体感交互技术通过传感器捕捉人体动作,实现人与虚拟环境的自然互动,其核心原理在于将物理空间中的运动数据实时映射到数字世界。这项技术为艺术创作、展览展示和互动娱乐等领域带来了革新,通过非接触式交互,能够构建沉浸式的叙事空间。在工程实践中,Kinect因其成熟的骨架追踪能力和高性价比,常被选为数据采集设备,而Unity引擎凭借其强大的实时渲染和跨平台特性,成为构建虚拟内容的首选。两者的结合,形成了一套从数据采集、坐标映射到事件触发的完整技术方案,尤其适用于美术馆、科技馆等需要营造独特体验的场景。本文以Kinect

weixin_30587927的博客 380

Unity碰撞检测避坑指南:从原理到实战的性能优化与常见误区解析

碰撞检测是游戏物理交互的核心基础,它决定了物体间如何响应接触与穿透。其原理基于物理引擎(如Unity内置的PhysX)的离散或连续检测机制,通过碰撞体(Collider)与刚体(Rigidbody)协同工作。掌握其技术价值在于能构建稳定、高效的交互体验,避免角色穿墙、触发失灵等致命问题。在应用场景上,无论是角色移动、子弹命中、拾取物品还是复杂环境交互,都深度依赖精准的碰撞检测。本文聚焦Unity开发中的MeshCollider性能陷阱与Trigger事件不触发的排查,通过剖析常见误区与优化策略,帮助开发者从

weixin_33895657的博客 401

基于Arduino与Unity的PICO 4 VR触觉手套DIY全攻略

触觉反馈技术是提升虚拟现实沉浸感的关键,其核心原理是通过执行器模拟物理接触的力或震动感。在物联网与嵌入式系统领域,利用微控制器驱动执行器并与上位机通信是实现该技术的常见工程实践。Arduino作为开源硬件平台,结合其丰富的传感器与执行器生态,为快速原型开发提供了便利;而Unity引擎强大的XR交互开发能力,则使其成为连接虚拟内容与物理硬件的中枢。本项目正是这一技术组合的典型应用:通过Arduino(推荐ESP32)驱动**震动电机**阵列,构建可穿戴手套硬件;利用**蓝牙**无线通信协议,建立与PICO 4

weixin_33806300的博客 475

Unity结合OpenXR开发Pico MR应用:从环境配置到交互实现

混合现实(MR)技术通过将虚拟内容与真实环境融合,创造了全新的沉浸式交互体验。其核心原理依赖于计算机视觉、空间感知与实时渲染技术,通过设备传感器构建环境地图,实现虚拟对象的精准定位与交互。在工程实践中,采用开放标准如OpenXR能有效解决VR/AR领域的设备碎片化问题,提升开发效率与跨平台兼容性。这一技术广泛应用于教育、工业仿真、远程协作等领域。本文聚焦于利用Unity引擎与OpenXR标准,在Pico VR一体机上实现MR应用开发,详细介绍了环境配置、手势交互及空间锚定等关键技术环节,为开发者提供了一套稳

464

Unity性能优化实战指南:从Profiler诊断到GPU与内存管理

在游戏与应用开发中,性能优化是保障流畅用户体验的核心工程实践。其原理在于平衡CPU、GPU与内存资源,避免因计算瓶颈、渲染过载或垃圾回收导致卡顿。这项技术的价值在于能直接提升应用响应速度、降低功耗并减少崩溃。在Unity开发、移动游戏及VR/AR等对帧率敏感的场景中,优化尤为关键。开发者常借助性能分析工具(如Profiler)定位瓶颈,并通过管理GC Alloc、优化Draw Call与使用对象池等技术手段系统性地解决问题。例如,通过分析GC Alloc能有效识别内存分配热点,而运用对象池技术可显著减少托管

weixin_30417487的博客 397

Unity开发Pico4 MR应用:构建健壮手柄交互系统的架构与实践

在Unity引擎中进行VR/AR应用开发时,输入系统是连接用户操作与虚拟世界的核心桥梁。其原理在于将物理设备的原始信号(如按键、摇杆、空间定位)抽象并映射为更高层次的交互意图(如选择、抓取、确认)。一个设计良好的输入系统不仅能提升应用的响应精度与沉浸感,更是实现复杂交互逻辑(如双手协同、多模式切换)的技术基础,对于游戏、模拟训练、虚拟社交等XR应用场景至关重要。本文聚焦于Pico4 MR一体机,深入探讨如何基于Unity XR Interaction Toolkit,从输入管理层、交互逻辑层到反馈呈现层,系

weixin_33910385的博客 565

Unity性能优化全链路实战:从CPU、GPU到内存管理的系统化工程思维

在游戏与应用开发中,性能优化是保障用户体验与项目成功的关键工程实践。其核心原理在于通过系统性的测量与分析,平衡CPU、GPU与内存等硬件资源,以达成稳定的帧率与流畅的交互。这项技术的价值在于,它能将应用从“可运行”提升至“体验流畅”的质变阶段,直接影响用户留存与商业表现。常见的应用场景包括移动端高帧率游戏、大型3D场景渲染以及WebGL轻量化应用等。本文聚焦于Unity引擎,深入探讨了如何利用性能分析工具(如Profiler)定位瓶颈,并系统性地实施脚本优化、渲染合批与资源管理策略。其中,通过对象池(Obj

weixin_34414650的博客 397

Unity Android游戏CPU占用率100%优化实战:从定位到解决

在移动游戏开发中,CPU占用率优化是保障流畅体验的核心技术挑战。其原理在于合理分配计算资源,避免主线程过载与渲染管线瓶颈。优化CPU性能不仅能降低设备发热与耗电,更能直接提升帧率稳定性,这对于玩家留存与口碑至关重要。常见的应用场景包括开放世界、多角色同屏及特效密集的游戏。本文聚焦Unity引擎在Android平台的高CPU占用问题,深入剖析了性能监控工具链的使用,并针对脚本逻辑、渲染管线与GC(垃圾回收)风暴等热区,提供了从诊断到治理的完整工程实践方案,帮助开发者系统性解决游戏“发烧”难题。

weixin_30920597的博客 389

Unity角色跳跃系统全解析:从物理实现到动画同步

在游戏开发中,角色移动与动画同步是构建沉浸式体验的核心技术。其原理基于物理引擎模拟与状态机驱动,通过实时检测角色状态并驱动动画参数,实现视觉反馈与物理逻辑的统一。这一技术对于提升游戏手感和玩家体验具有重要价值,广泛应用于平台跳跃、动作冒险等各类游戏场景。本文聚焦Unity引擎,深入探讨如何结合Rigidbody物理组件与Animator动画状态机,解决跳跃动画与物理运动精准同步的工程难题,并涵盖地面检测、输入管理及动画融合等关键实践。

chubaisheng8627的博客 336

Unity多人游戏客户端预测物理:核心原理、开源方案与实战优化

在多人联机游戏开发中,网络延迟是影响玩家体验的核心挑战之一。客户端预测(Client-side Prediction)作为一种关键技术,其原理是允许客户端在等待服务器响应的同时,先在本地模拟操作结果,从而提供即时反馈,以掩盖网络延迟。这项技术的核心价值在于显著提升快节奏动作、射击类游戏的响应速度和操作手感。其应用场景广泛覆盖了FPS、MOBA、体育竞技等对实时性要求极高的游戏类型。实现客户端预测物理时,开发者常需面对状态同步、回滚与和解(Reconciliation)等复杂问题,并需在Unity内置的Phy

weixin_30378623的博客 339

时空图神经网络实战:T-GCN在交通流量预测中的深度解析

本文深度解析了时空图神经网络T-GCN在交通流量预测中的实战应用。通过结合图卷积网络(GCN)和门控循环单元(GRU),T-GCN有效捕捉交通数据的时空依赖性,相比传统方法降低30%以上预测误差。文章详细介绍了T-GCN的核心技术、工程实践和优化策略,为智能交通系统提供有力工具。

weixin_29038537的博客 267
上一篇: Unity 实现相机视角慢慢变黑的效果(VR)
下一篇: Unity 中加载外部图片文件,可动态更换图片
科幻之眼
博客等级 码龄9年 101粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值