当前位置:网站首页>【Unity】关于一个炮台Prefab的剖析
【Unity】关于一个炮台Prefab的剖析
2022-08-11 05:30:00 【偷不偷月】
Turret Prefab的整体架构
文章目录
一.前言
本文在1.2.1和1.2.1.1.1部分简述该Prefab的巧妙之处,其他部分均为实体,无需分析。
该预置物和脚本可以去unity手册自行下载:该预置物的有关操作和下载地址
二.Turret(炮台)
1.Base(底座)
1.2.Cube(立方体)
Global坐标
Local坐标
1.2.1.Barrel Pivot(炮管枢轴)
Global坐标
Local坐标(继承于Cube)
我们可以看到1.2.1名为Parrel Pivot(炮管枢轴),它本质是一个空物件,即除了Transform没有其他组件,选中后只能看到一个坐标系,而这里他作为cube的子物件,自然就代表了Cube的中心坐标,其position值为(0,0,0),但细心观察可以发现,选中Barrel Pivot后,坐标系并没有在Cube中心显示,而是显示在其子物体Barrel的中心位置,这是因为创建了空对象之后,其下的子物件Barrel自动粘附在这个坐标系上,对Barrel Pivot操作时子物体Barrel也会随之变动,操作子物件Barrel时Barrel Pivot不会变动,但一般Barrel Pivot是作为参照使用,不会轻易直接对其操作。因此子物件Barrel的坐标为相对于Cube(即此处的Barrel Pivot)坐标系下的相对位置坐标,Launcher的坐标为相对于Barrel坐标系下的相对位置坐标。
1.2.1.1.Barrel(炮管)
Global坐标
Local坐标(继承于Barrel Pivot)
1.2.1.1.1.Launcher(发射器)
Global坐标
Local坐标(继承于Barrel)
Launcher同Barrel Pivot类似,本质是一个空物件,在此处有它的巧妙之处,我们可以看到右侧有一个脚本组件,这个脚本是用来发射炮弹(刚体Rigidbody)的,因为炮台是由三个实体组成的,无论挂在哪个实体上都会有碰撞发生(除非把所有Collider关掉),炮弹会在里面直接爆炸,而这个空物件放在炮口附近就会避免这个问题的发生,而且看起来也很像从里面发射出来的效果。
脚本代码如下:
public Rigidbody projectile;
public float speed = 4;
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
Rigidbody p = Instantiate(projectile, new Vector3(transform.position.x,transform.position.y,transform.position.z), transform.rotation);
p.velocity = transform.forward * speed;
}
}
这里的forward指的是z方向,后面几组图的物体都有旋转量,Cube旋转是朝向调整;Barrel旋转是形状需要,将圆柱体放平;而Launcher是为了炮弹的发射方向正确,这才是最终目的。
边栏推荐
- Jetpack's dataBinding
- PAT乙级刷题之路
- C语言-7月31日-指针的总结以及typedef关键字
- 基于微信小程序云开发实现的电商项目,可以自行定制开发
- mk file introduction
- Day 78
- The Summer of Open Source 2022 is coming | Welcome to sign up for the OpenMLDB community project~
- OpenMLDB + Jupyter Notebook: Quickly Build Machine Learning Applications
- Day 73
- js 学习进阶(事件高级 pink老师教学笔记)
猜你喜欢
Use the adb command to manage applications
微信小程序云开发项目wx-store代码详解
Getting Started with JNI
【LeetCode-13】罗马数字转整数
Jetpack使用异常问题集锦
【LeetCode-34】在排序数组中查找元素的第一个和最后一个位置
Scene-driven feature calculation method OpenMLDB, efficient implementation of "calculate first use"
js learning advanced (event senior pink teacher teaching notes)
连接数据库时出现WARN: Establishing SSL connection without server‘s identity verification is not recommended.
[Meetup] OpenMLDBxDolphinScheduler engineering and scheduling link link characteristics, building the end-to-end MLOps workflow
随机推荐
经纬度求距离
IIC and SPI
jdbc接口文档参考,jdbc接口方法逻辑探究
USB in NRZI to encode the data
OpenMLDB: Consistent production-level feature computing platform online and offline
Tinker的自我介绍
[Meetup] OpenMLDBxDolphinScheduler engineering and scheduling link link characteristics, building the end-to-end MLOps workflow
微信小程序云开发项目wx-store代码详解
Day 86
Day 77
The third phase of the contributor task is wonderful
C语言-6月8日-求两个数的最小公倍数和最大公因数;判断一个数是否为完数,且打印出它的因子
JS事件循环机制
Some formulas for system performance and concurrency
C语言实现扫雷游戏
Js method commonly used objects and attributes
【无标题】
微信小程序启动页的实现
父子节点数据格式不一致的树状列表实现
IO流和序列化与反序列化