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

Unity3D之Character Controller(CC)与GameObject的碰撞方法

先来一部分网上常见的内容(略整理):

 

--------------------分隔线---------------------- 

Unity3d中参与碰撞的物体分2种类型:

一、发起碰撞的物体。

二、接收碰撞的物体。

1. 参与发起碰撞物体:Rigodbody, CharacterController 角色碰撞器。

2. 参与接收碰撞的物体:所有Collider .

工作的原理为:发生碰撞的物体中必须要有“发起碰撞”的物体。否则,碰撞不响应。

比如:两面墙都只用BoxCollider ,所以墙与墙之间无反应。

比如:一个带有Rigidbody属性的箱子,能落到带有MeshCollider属性的地面上。

比如:一个带有Rigidbody属性的箱子,可以被一个带有CharacterController 属性的人推着跑。

在所有Collider上有一个Is Trigger 的boolean型参数。

(If enabled, this Collider is used for triggering events, and is ignored by the physics engine.)

当发生碰撞反应的时候,会先检查此属性是否为true。

当激活此选项时,会调用碰撞双方的脚本 OnTrigger, 反之,脚本方面没有任何反应。

当激活is trigger = true,不会发生后续物理的反应。反之,发生后续的物理反应。

总结:Is Trigger 好比是一个物理功能的开关, 是要“物理功能”还是要“OnTrigger脚本”。

在Rigodbody 上有一个Use Gravity 的boolean型参数.

(Controls whether gravity affects this rigidbody.)

 

Unity 物理引擎,处理的一个细节:

当一个CharacterController不发生位置变化,一个Collier发生位置变化后,产生碰撞。将不会调用任何碰撞函数,也就是没有碰撞反应的。

物理引擎视为CharacterController无碰撞.

--------------------分隔线----------------------

 

现在就来考虑如何让GameObject(魔法球)主动碰撞到CC(人物), 碰撞到人物后,显示受击效果.

解决方案, 由上面的可知, 做出如下设置:

1:魔法球: Collider(合适的类型), Rigidbody(Use Gravity可以去掉)

2:人物: CC.

脚本:

在魔法球上添加脚本

    void OnCollisionEnter (Collision collision)
    {
        Debug.Log ("**** collision.gameObject.name***:" + collision.gameObject.name);
        if(collision.gameObject.name == "Player")
        {
       // 发送攻击消息
SendAttackMsg();
       // 销毁魔法球 Destroy (gameObject); } }

 

 

 

转载于:https://www.cnblogs.com/willbin/p/3414017.html

相关文章:

  • CentOS 6.4 kickstart订制企业级操作系统专属光盘
  • classLoader 原理
  • JAVASE贪吃蛇开发记录
  • How to use Cisco Documentation for CCIE
  • MySQL与Oracle之间互相拷贝数据的Java程序
  • Servlet线程安全的解决方法
  • php 多个文件上传
  • mysql单表体积和一个库设计多少张表为妥
  • 安装DPM 2012 R2时报错一例
  • 错误日志记录
  • 动态编译执行java类
  • 第三部分:Android 应用程序接口指南---第一节:应用程序组件---第三章3-3日历provider...
  • Android中的回调Callback
  • 组成_05_CPU
  • 组播地址列表
  • [NodeJS] 关于Buffer
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • input实现文字超出省略号功能
  • JavaScript的使用你知道几种?(上)
  • pdf文件如何在线转换为jpg图片
  • Python连接Oracle
  • Rancher-k8s加速安装文档
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • web标准化(下)
  • 从重复到重用
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 每天10道Java面试题,跟我走,offer有!
  • 全栈开发——Linux
  • 人脸识别最新开发经验demo
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • #、%和$符号在OGNL表达式中经常出现
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • %@ page import=%的用法
  • (八)Spring源码解析:Spring MVC
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • (轉)JSON.stringify 语法实例讲解
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .gitignore文件_Git:.gitignore
  • .Net FrameWork总结
  • @EventListener注解使用说明
  • @media screen 针对不同移动设备
  • @WebServiceClient注解,wsdlLocation 可配置
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [2010-8-30]
  • [20171101]rman to destination.txt
  • [383] 赎金信 js
  • [AIGC codze] Kafka 的 rebalance 机制
  • [BIZ] - 1.金融交易系统特点
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)