Unity --- 枪类与子弹类的设计初探 与 Physics Material

这篇具有很好参考价值的文章主要介绍了Unity --- 枪类与子弹类的设计初探 与 Physics Material。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.类的设计方法 --- 首先将不同的对象相同的行为和方法做到一个类A中,然后再给每个对象各创建一个类,并且都继承大类A,同时在自己的类中创建自己独有的方法或者属性Unity --- 枪类与子弹类的设计初探 与 Physics Material

Unity --- 枪类与子弹类的设计初探 与 Physics Material

1.一般子弹的射击都是用射线检测的方式去做的 --- 用碰撞器会出现我们不想要的物理效果,用触发器的话子弹速度过快会导致触发失效的问题

2.如果想让满足分部位造成不同伤害的话,就需要给被伤害对象的每个部位都套一个对应的碰撞器,某一个部位检测到碰撞了就让这个部位调用对应的碰撞方法造成不同的伤害。

3.给不同的部位加碰撞器也是有讲究的:

一个游戏模型是由不同部位的子物体组成的,当我们要添加碰撞器时,需要做的就是给这些代表不同部位的子物体再添加一个空子物体,这个空子物体中只有两个组件 ---Transfrom表示位置,以及Collider --- 最关键的碰撞器

这种做法就能够保证当代表不同部位的子物体运动起来时,作为这些子物体的子物体的“碰撞器”也会跟着一起运动。

4.一个类为子类,它里面有一个方法从返回类型,函数名到函数参数都与父类相同,此时通过子类中对象调用该方法,那么应该执行的是子类中该方法还是子类继承的父类方法呢?

答:会优先执行子类中该方法

5.public --- 大家都能调用,protected --- 自己和自己的子类能调用(父类不可以),private --- 只有自己能调用Unity --- 枪类与子弹类的设计初探 与 Physics Material

1.目前我们掌握的获取游戏资源的方式有两招:

a.创建一个公开变量,然后将与变量类型相对应的游戏资源拖到Inepector界面处为对应公开变量生成的赋值框

b.上面这种方式需要人手动操作,很不方便,因此我们可以升级为通过代码来查找和载入游戏资源

Unity --- 枪类与子弹类的设计初探 与 Physics Material 2.Resource类中有一个方法 --- Load载入方法 --- 方尖框内放资源的类型,括号内传资源的路径 --- 目录1\目录2\...\资源名称(PS:还有一个前提还是资源必须放在Resource文件夹下,也正是因为这个规定,所以Resource不用写入目录中) --- 方法会返回我们想找的游戏资源对象,此时我们需要将其传给对应的引用,用引用来管理游戏资源(PS:此时只是找到了游戏资源!并没有在游戏场景中创建它

3.如果想要在游戏场景中创建游戏资源的话还需要调用 ---- Instantiate()方法 --- 参数是我们要创建的游戏资源(必须是GameObject类)

 Unity --- 枪类与子弹类的设计初探 与 Physics Material

 1.资源路径示例 --- 如EffectsEnemy的资源路径是:ContactEffects\EffectsEnemy --- 由于资源一定要在Resource文件夹下,所以Resource不需要写入目录


介绍一下 --- 物理材质 --- Physics Metarial 

1.创建了物理材质之后,会出现上面这么几个属性 --- 由上到下分别是:动态摩擦力,静态摩擦力,弹力,摩擦力合并,弹力合并。Unity --- 枪类与子弹类的设计初探 与 Physics Material

2.这两个属性的取值的意思如下:(以Bounce Combine为例)

当两个物体相互接触时,物体受到的弹力 = Bounce Combine --- 若为Average则表示两个物体的弹力平均,Min就是选弹力最小的游戏物体,Multiply指受到的弹力等于二者的弹力相乘,Max则是受到的弹力是二者之间弹力的最大值

(Fiction Combine同理)Unity --- 枪类与子弹类的设计初探 与 Physics Material

Physics Material 物理材质属性位于Coliider碰撞器组件处 

1.由于用触发器作判定会比较消耗性能,我们一般不会随便用触发器来作判定,适用的场景一般有:a.触发范围的图形比较难用代码来形容(不好用距离来进行判定),此时直接用触发器做个触发范围图形,直接用判定就可以了

(PS:通常用来代替触发器判定的是两个游戏物体之间的距离判定)

Unity --- 枪类与子弹类的设计初探 与 Physics Material

1.this.transform.forward获取的是一个向量 --- 这个向量是位于世界坐标系的 ,向量的方向与游戏物体自身坐标系的Z轴正反向一致,向量的起点为世界坐标系的原点,向量的大小为1Unity --- 枪类与子弹类的设计初探 与 Physics Material

1.如果说通过一个类创建的对象在游戏中只有一个,且这个对象经常会被其他的对象调用的话,我们可以通过 ---- 直接在类中提供类的对象引用来提高代码的简洁和易读性

具体的方法如上:

a.在类中创建一个具有公开权限的,该类的静态属性 (PS:属性的get 和 set也是能够设置访问权限的)

Unity --- 枪类与子弹类的设计初探 与 Physics Material

这段代码是指这个属性是大家都可以读取,但是只有类内部自己可以设置的,如果想要在外部进行设置的话,需要我们提供公开的接口方法

(1.创建一个类的对象 --- 调用构造函数 --- 构造函数的函数名为类名 ---一般都是通过引用来管理对象 --- 如 Play me(创建引用) = new Play() (创建对象的同时将对象赋值给引用))

b.创建了类的对象后,将对象赋值给静态引用进行管理

通过上面这一操作能够实现的好处:可以直接通过类名加静态引用来访问到这个唯一对象的各种属性和方法,而不需要去查找到这个对象,然后再创建个引用指向它,然后再通过引用来调用属性和方法。

节省了很多的不必要操作。只有一个对象,那就提前创建好引用,然后所有人只找这个引用,不需要自己再创建引用去找对象,岂不美哉


1.一个个脚本/组件就相当于一个个类,一个新创建的,空的游戏物体就相当于一个空对象集Unity --- 枪类与子弹类的设计初探 与 Physics Material

2.补充射线检测方法的一个参数 --- 这个参数的类型是 -- L ayerMask

这个参数决定了射线能够在哪一个层中进行检测文章来源地址https://www.toymoban.com/news/detail-420440.html

到了这里,关于Unity --- 枪类与子弹类的设计初探 与 Physics Material的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity实现弹射子弹

    unity实现弹射子弹,子弹在不同敌人之间来回弹射,发射自动选择最近的敌人,然后每次随机选择附近的敌人进行弹射,可以控制弹射次数,比如3次后子弹销毁 可以通过以下步骤在Unity中实现弹射子弹的效果: 1.创建一个子弹对象和敌人对象,并在子弹对象上添加一个控制脚

    2024年02月10日
    浏览(93)
  • Unity Physics.SphereCast的理解

    测试结果如下 白色圆柱+右侧半圆则为射线检测的范围

    2024年02月02日
    浏览(31)
  • C++初阶--类与对象--const成员和日期类的实现

    将const修饰的成员函数称之为const成员函数。 在一个成员函数里面,对于this指针指向的对象,是隐藏式的,没有办法用常规的方法去修饰它,所以我们是这样进行修饰的: 注意事项: date.h date.cpp 这里采用多文件编程的方式,所以在date.cpp中,是在Date类外使用的,需要加上作

    2024年02月05日
    浏览(49)
  • Unity中Physics.Raycast 的使用

    Physics.Raycast 官方文档中提供的参数如下    Physics.Raycast 从指定的位置发射一条射线,如果射线与物体发生碰撞返回true否则返回false 其中射线的起点,方向是不可以省略的,其他参数可以省略 案例▼ 第1,2个参数定义了一条射线的起点与方向 第3个参数为RaycastHi用以从射线获

    2024年02月08日
    浏览(45)
  • Unity 实现简单的发射子弹功能

    前言:对于射击类游戏,相信大家并不陌生。那么想要实现这一功能,我们通常会使用两种方法: 1.射线追踪。  2.子弹实例化。 今天,我们就通过第二种方式去实现发射的功能。 一、首先,我们准备好一把枪的模型,将其放到场景中,调整好位置。  二、 我们在枪口前面

    2024年02月11日
    浏览(99)
  • Unity 之`Physics.Raycast()`方法,射线检测

    当你在Unity中使用 Physics.Raycast() 方法时,你实际上是在进行一种射线检测,以查看一条射线是否与场景中的碰撞体相交。这可以用来实现很多不同的功能,如点击选择物体、射击命中检测等。以下是 Physics.Raycast() 方法的详细介绍: 参数解释: origin :射线的起点(3D世界坐标

    2024年02月11日
    浏览(42)
  • <c++> 类的继承 | 基类与派生类 | 构造函数与析构函数

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 从零开始的 c++ 之旅 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪 c++ 面向对象三大特性: 封装,继承,多态 。通过本文我们将了解什么是类的

    2023年04月20日
    浏览(52)
  • Unity中玩家的攻击(发射子弹,挥剑)

    目前来说,我就知道玩家两种攻击方式,1.发射(子弹,弓箭),2.挥剑 1.发射子弹 想要玩家发射子弹,需要制作两个部分(玩家发射动画除外),第一个部分就是控制玩家的脚本,第二部分则是子弹部分,子弹部分需要将子弹做成预制件的形式。 制作思路:1.首先先把子弹

    2023年04月09日
    浏览(35)
  • 关于Unity Physics.CheckBox的使用方法

    在UnityAPI手册中Physics.CheckBox是Unity Physics类中的一个方法,该方法拥有四个重载,用于检查给定的盒体是否与其他碰撞体重叠。 public static bool CheckBox (Vector3 center, Vector3 halfExtents, Quaternion orientation= Quaternion.identity, int layermask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteracti

    2024年01月21日
    浏览(39)
  • DOTS Unity.Physics物理引擎碰撞事件处理

    最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞事件处理以及核心相关概念。 Unity.Physics 物理引擎的主要流程与P ipeline   Unity.Physics物理引擎做仿真迭代计算的时候主要通过以下步骤来执行:   

    2024年01月18日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包