Unity的场景搭建及飞机起飞

一、按钮的制作。

本次的案例主要实现飞机的起飞、开始、停止。因此要有两个按钮Fly、stop。
1、依次点击create——>UI——>选择Button。
在这里插入图片描述
2、创建出来的按钮的效果如图:在这里插入图片描述
3、调整按钮的位置:
在这里插入图片描述
4、调正按钮的样式:
(1)调整点击按钮后的颜色。
在这里插入图片描述
(2)调整按钮的形状:
在这里插入图片描述
(3)调整按钮的长和高:
在这里插入图片描述
(4)缩小按钮的比例:
在这里插入图片描述
(5)改变按钮上的文字:
在这里插入图片描述
5、制作按钮的边框。
这里需要再创建一个按钮,可以用快捷键Ctrl+D进行复制,我们把新复制的按钮的Text进行删除,同时把新创建的按钮拖放到上个按钮里面:
具体的效果如下:
在这里插入图片描述

二、给飞机添加碰撞边界、重力。

添加碰撞边界:
1、选中——>Add Component——>添加Box Collider
在这里插入图片描述
2、添加后的状态:我这里是进行调整过的,图中正方形代表飞机的边界:默认在飞机的底部!!!
调正正方体与飞机的大小相匹配。
在这里插入图片描述
3、需要点击Edit Collider后进行调整。
在这里插入图片描述
添加重力。
1、选中——>Add Component——>添加Rigidbody
在这里插入图片描述
2、勾选Use Gravity使用重力。默认是勾选的状态。在这里插入图片描述
3、我们进行调试,检验添加的是否具有重力。

三、实现功能。

1、安装PlayMaker;点击PlayMaker——>PlayMaker Editor——>出先PlayMaker的编辑窗口。
安装成功的标志是:菜单栏有PlayMaker的菜单。
在这里插入图片描述
2、选中Fly按钮——>PlayMaker空白编辑窗口右键——>add FSM在这里插入图片描述
在这里插入图片描述
3、添加后的状态:
在这里插入图片描述
4、点击按钮,产生事件,飞机的螺旋桨旋转。
(1)找到Fly按钮的右侧——>On Click()——>点击+号——>添加一个单击的事件。
在这里插入图片描述
(2)将Fly按钮进行拖放到刚才创建的事件那里。在这里插入图片描述
(3)
在这里插入图片描述
注:上面的操作,主要是点击按钮后,产生一个事件,发送事件。
可是,具体的怎样操作事件我们还没有进行处理。
下面我们就来进行设定啦!!!
(4)新建事件FLY。
在这里插入图片描述
(5)PlayMarker的编辑窗口——>Add State
在这里插入图片描述
点击Add State后出现的效果如下:
在这里插入图片描述
(6)右键——>Add Global Transition ——>FLY在这里插入图片描述
(7)事件绑定。
在这里插入图片描述
(8)那么我让该事件做什么呢?
添加Rotate
在这里插入图片描述
在这里插入图片描述
(9)指定螺旋桨这个物体进行旋转。
在这里插入图片描述
经过以上的设置:我们已经完成了点击Fly按钮,飞机的螺旋桨可以旋转了!!!
Stop按钮停止飞机的螺旋桨旋转与上面的类似:
选中Stop按钮——>将Fly按钮拖放——>添加STOP事件——>右键PlayMaker编辑面板——>右键——>
Add Global Transition ——>STOP——>事件联系上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在飞机的螺旋桨可以分别用FLY、Stop按钮进行旋转与停止啦!
5、飞机上升的实现。
(1)选中飞机——>PlayMarker空白出右键——>Add FSM
在这里插入图片描述
(2)通过W键控制上升。
选中State1——>Action Browser——>添加Get Key Down
在这里插入图片描述
在这里插入图片描述
(3)Key属性设置为W键。
在这里插入图片描述
(4)新建一个事件。
在这里插入图片描述
在这里插入图片描述
这时候PlayMarker编辑窗口的样式是:
在这里插入图片描述
(5)我们按住Ctrl键——>拉出来再新建一个状态。
选中拉出来的状态——>Add Browser ——>添加Add Force。
在这里插入图片描述
设定300的力。
在这里插入图片描述
(6)实现点击W键上升,松开的时候消失。
再添加一个Get Key Up;同样设定W键,
在这里插入图片描述
新建一个事件Stop:
在这里插入图片描述
在这里插入图片描述
然后把事件返回第一个状态:按住Ctrl键
在这里插入图片描述
好了经过上面的设置,飞机的起飞就实现了!!!

### Unity模拟飞机飞行受力分析 在 Unity 中创建逼真的飞机飞行模拟涉及多个方面,特别是物理引擎的应用。为了使飞机按照现实中的空气动力学原理运动,需利用特定组件和原则。 #### Rigidbody 组件配置 对于飞机的基础物理交互而言,`Rigidbody` 是必不可少的一部分。此组件允许物体遵循牛顿力学定律移动,在 Aircraft-Physics 场景下,`Drag` 和 `Angular Drag` 参数被设定为零以防止不必要的阻力影响自定义的物理行为[^1]。 ```csharp // 设置刚体属性 rigidbody.drag = 0f; rigidbody.angularDrag = 0f; ``` #### 应用力与扭矩的方法 当向飞机施加诸如升力、推力等力量时,应当谨慎操作以免增加过多计算负担。如果这些力是可以预见地改变,则建议采用插值技术或是动画曲线来代替即时调整,从而降低每一帧内的运算需求[^2]。 ```csharp // 平滑应用推力 Vector3 thrustDirection = transform.forward * thrustPower; rigidbody.AddForce(thrustDirection, ForceMode.Acceleration); ``` #### AeroSurface 的功能描述 每个航空面(比如机翼)都可以单独作为一个 `AeroSurface` 实例存在,这使得开发者可以根据实际设计精确指定各部位产生的气动效应。此类对象不仅限于静态表现,还可以充当控制表面参与动态响应过程。 ```csharp public class AeroSurface : MonoBehaviour { public float liftCoefficient; // 升力系数 private void Update() { Vector3 velocity = rigidbody.velocity; float speedSquared = Mathf.Pow(velocity.magnitude, 2); Vector3 normal = CalculateNormal(); // 计算升力并向刚体添加力 Vector3 liftForce = (normal * liftCoefficient * airDensity * speedSquared / 2f).normalized; GetComponent<Rigidbody>().AddForceAtPosition(liftForce, transform.position, ForceMode.Force); } } ``` #### 触发器检测机制简介 为了让游戏内逻辑更加复杂多样,有时还需要借助触发事件完成某些特殊任务。例如碰撞检测之外的信息传递或状态切换等功能可以通过设置带有 `Is Trigger` 属性的 Collider 来达成目的;不过这里并不直接关联到飞行模拟的核心部分[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小Java开发者

“是一种鼓励,你懂的”

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值