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

news2024/11/22 13:56:08

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

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

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

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

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

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

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

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

5.public --- 大家都能调用,protected --- 自己和自己的子类能调用(父类不可以),private --- 只有自己能调用

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

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

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

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

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

 

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


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

1.创建了物理材质之后,会出现上面这么几个属性 --- 由上到下分别是:动态摩擦力,静态摩擦力,弹力,摩擦力合并,弹力合并。

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

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

(Fiction Combine同理)

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

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

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

1.this.transform.forward获取的是一个向量 --- 这个向量是位于世界坐标系的 ,向量的方向与游戏物体自身坐标系的Z轴正反向一致,向量的起点为世界坐标系的原点,向量的大小为1

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

具体的方法如上:

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

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

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

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

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

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


1.一个个脚本/组件就相当于一个个类,一个新创建的,空的游戏物体就相当于一个空对象集

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

这个参数决定了射线能够在哪一个层中进行检测

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

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

相关文章

STM32-高级定时器输出比较模式实验

比较输出功能:定时器通过对预设的比较值与定时器特定寄存器的值做比较之后,并依据相应的输出模式从而实现各类输出,如PWM输出、电平翻转、单脉冲模式等。一般来说,STM32的通用定时器和高级定时器都具有比较输出功能,不…

使用putty在云服务器上安装jdk

在云服务器上安装jdk的步骤: 1. 登录到云服务器,打开putty终端,并使用root账户登录。 2. 在终端中输入以下命令,更新软件包列表: sudo apt-get update 3. 安装OpenJDK 8,请在终端中输入以下命令&#…

leetcode-1041. 困于环中的机器人

leetcode-1041. 困于环中的机器人1. 算法题目2 . 实现思路3. 参考代码1. 算法题目 题目如下: 在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意: 北方向 是y轴的正方向。南方向 是y轴的负方向。东方向 是x轴的正方向。西方向 是x轴的…

Level_2(2)题目整理

文章目录L2-022 重排链表(模拟❗)L2-023 图着色问题L2-024 部落(并查集)L2-025 分而治之(与 L2-023差不多,邻接表遍历)L2-026 小字辈(求树的深度)L2-027 名人堂与代金券(💡处理&…

统信 UOS 20 初体验

统信 UOS 20 初体验1、下载UOS 202、安装UOS 202.1、发行版选择debian 10 64位2.2、选择Graphic2.3、语言中文2.4、开始安装2.5、安装完后重启2.6、登录UOS 206、使用UOS6.1、包管理器1、下载UOS 20 下载的是服务器免费授权版 https://www.chinauos.com/resource/download-ser…

[Java]面向对象高级篇

文章目录包装类包装类层次结构基本类型包装类特殊包装类数组一维数组多维数组可变长参数字符串String类StringBuilder类内部类成员内部类静态内部类局部内部类匿名内部类Lambda表达式方法引用异常机制自定义异常抛出异常异常的处理常用工具类数学工具类随机数数组工具类包装类 …

【AIGC】Visual ChatGPT 视觉模型深度解析

欢迎关注【youcans的AGI学习笔记】原创作品 【AIGC】Visual ChatGPT 视觉模型深度解析1. 【Visual- ChatGPT】火热来袭2. 【Visual-GPT】操作实例2.1 处理流程2.2 操作实例3. 【Visual-GPT】技术原理分析3.1 技术原理3.2 系统架构3.3 模块说明3.4 Prompt Manager 功能与规则3.5…

Distilling Knowledge via Knowledge Review(引言翻译)

翻译得可能不太准确,希望有能力的各位批评指正! Introduction 第一段 深度卷积神经网络(CNN)在计算机视觉多数任务中取得了显著的成功。 然而,卷积网络的成功往往伴随着相当大的计算和内存消耗, 使得将…

人工智能交互系统界面设计(Tkinter界面设计)

文章目录前言一、项目介绍二、项目准备三、项目实施1.导入相关库文件2.人脸信息验证功能3.语音交互与TCP数据通信4.数据信息可视化四、相关附件前言 在现代信息化时代,图形化用户界面(Graphical User Interface, GUI)已经成为各种软件应用和…

SpringBoot——Scheduled定时任务

目录 1.静态定时任务 2.动态定时任务 在一些业务场景中,我们需要定义一些任务在我们指定的时间或是每隔一个时间段就自动执行,来作为任务的前提,保证业务的执行。比如:我们需要一个定时任务,每天早上6点执行&#xf…

【springcloud 微服务】Spring Cloud Alibaba Nacos使用详解

目录 一、前言 二、nacos介绍 2.1 什么是 Nacos 2.2 nacos 核心能力 2.2.1 服务发现和服务健康监测 2.2.2 动态配置服务 2.2.3 动态 DNS 服务 2.2.4 服务及其元数据管理 2.2.5 nacos生态地图 2.3 与其他配置中心对比 三、nacos快速部署 3.1 获取安装包 3.2 修改脚…

【分享NVIDIA GTC 23大会干货】加速生成式AI在生物学和医疗领域的应用

【分享NVIDIA GTC 23大会干货】加速生成式AI在生物学和医疗领域的应用1. NVIDIA医疗领域AI计算平台——NVIDIA CLARA2. NVIDIA CLARA医学影像子平台——MONAI3. NVIDIA CLARA医疗设备子平台——Holoscan4. NVIDIA基因组学解决方案Parabricks5. NVIDIA药物研发解决方案6. 个人思…

互联网医院源码|互联网医院软件体现智慧医疗的优势

现在大家看病一般都会直接在互联网医院平台上去就诊,每次大家需要看病时,可以在手机上直接去预约指定的医生,同城周边的所有医院都是可以去直接选择的,这样也可以去帮助大家节省很多的看病时间,在互联网医院软件中所具…

【ApiPost】实现【gRPC】调试【上手篇】

ApiPost下载地址 下载中心-Apipost-中文版接口调试与文档管理工具Apipost官方下载中心为您提供Apipost软件最新版本,其中包括Windows、Mac、Linux等多个客户端的安装包,Apipost下载就上Apipost.cn,国内专业的接口测试软件,一键生成API文档。https://www…

中核科技:科技匠心 智启未来

​  2023 年4月 13—15 日,2023年易派客工业品展览会、石油石化工业展览会、第七届中国石油和化工行业采购年会,在苏州国际博览中心胜利召开。本次展会展览面积53000平方米,参展企业500余家,汇集了中国工业制造领域的大型国企央…

Parcel 实践指南

Parcel 是一个极速零配置的 Web 应用程序打包器。它的零配置特性使得开发者可以更快速地进行项目的构建。本文将向你展示如何在项目中实践 Parcel,并讨论一些性能优化策略以及不同场景下的最佳实践。 总结 Parcel 是一个强大而灵活的打包工具,它可以让你…

【Python_Scrapy学习笔记(八)】基于Scrapy框架实现多级页面数据抓取

基于Scrapy框架实现多级页面数据抓取 前言 本文中介绍 如何基于 Scrapy 框架实现多级页面数据的抓取,并以抓取汽车之家二手车数据为例进行讲解。 正文 在介绍如何基于 Scrapy 框架实现多级页面数据的抓取之前,先介绍下 Scrapy 框架的请求对象 reques…

Linux超级强大的十六进制dump工具:XXD命令,我教你应该如何使用!

在Linux操作系统中,XXD是一个十六进制dump工具,可以将二进制文件转换为十六进制表示,并以可读的形式显示。XXD命令可用于显示文件内容、编辑文件等用途。本文将介绍如何在Linux中使用XXD命令。 安装XXD命令 通常情况下,XXD命令已…

Java面试题总结 | Java基础部分2(持续更新)

文章目录反射的优缺点BIO、AIO、NIO同步异步概念**阻塞与非阻塞****BIO****NIO****AIO**总结设计模式的好处设计模式一定是好用的吗Integer.ValueOf和new Integer的区别Integer.parseInt(s)与Integer.valueOf(s)的区别String是线程安全的吗?StringBuffer和StringBui…

开源GPT-4小羊驼(Vicuna)快速上手指南

小羊驼(Vicuna)是什么 Vicuna: 一个开源的GPT,宣称实现了GPT-4 90%的功能。 UC伯克利学者联手CMU、斯坦福等,再次推出一个全新模型70亿/130亿参数的Vicuna,俗称「小羊驼」(骆马)。 并且和其他以往不同的是…