Unity百游修炼(13)——制作简易赛车详细全教程

        在 Unity 游戏开发领域,打造生动且功能齐全的赛车游戏是许多开发者的目标。实现赛车的流畅移动与精准操控,是整个游戏体验的核心。本文将细致地讲解如何利用 Unity 中的 Plane、Cube 和 Cylinder 物体,通过一系列严谨的操作步骤,达成赛车移动的最终效果。


一.最终效果

unity5.2


二.素材

        Unity中创建的物体:Plane和Cube和Cylinder

(1)Plane 用于模拟赛车行驶的地面,为赛车提供稳定的支撑平面,确保赛车能够在其表面正常移动。

(2) Cube 则作为构建赛车车身的基础,通过适当的变换与调整,塑造出赛车车身的大致形状。

(3) Cylinder 将被用来制作赛车的轮子,通过合理设置其参数与位置,实现轮子的转动效果。


三.实现路径

1.制作赛车的各个部位

        从无到有地搭建赛车的各个组成部分,包括车身、轮子等。通过对基本物体的变换、组合以及参数调整,让它们呈现出赛车各部位的形状与功能。这一步骤为后续实现赛车的移动与操控奠定了实体基础。

2.使用脚本控制赛车的转动和速度

        编写专门的控制脚本,精确地控制赛车的转动方向与行驶速度。通过代码逻辑,实现玩家输入与赛车实际动作之间的映射,使玩家能够通过键盘、手柄等输入设备,流畅地操控赛车在赛道上行驶。


四.操作步骤

1.创建平面,命名为Plane;

        打开 Unity 编辑器,在 Hierarchy 面板中,右键点击 Create Empty,在弹出的菜单中选择 Plane。创建完成后,将该物体命名为 Plane

 

2.创建立方体cube,经过平面转换为车身,命名为Car

        同样在 Hierarchy 面板中,右键点击 Create Empty,选择 Cube 创建一个立方体。立方体创建完成后,它将作为我们赛车的车身雏形。在 Inspector 面板中,对立方体的位置、旋转角度和缩放比例进行调整。

 

3.创建一个空对象,命名为Wheel,将其附着为Car的子物体。

        在 Hierarchy 面板中,再次右键点击 Create Empty,创建一个空对象。将这个空对象命名为 Wheel,它将作为轮子的父物体,方便对轮子进行统一管理与控制。选中 Wheel 对象,通过拖拽的方式将其放置在 Car 物体下,使其成为 Car 的子物体。这样,轮子的位置和运动将与车身相关联,当车身移动或旋转时,轮子也会随之相应变化。

4.创建一个Capsule圆柱体,删除圆柱体的capsule colider组件,并设置为Wheel的子物体。

        在 Hierarchy 面板中,右键点击 Create Empty,选择 Capsule 创建一个圆柱体。由于我们只需要圆柱体的模型来模拟轮子,不需要其自带的碰撞体(capsule colider),所以在 Inspector 面板中,选中 Capsule Collider 组件并点击 Remove Component 将其删除。接下来,通过拖拽的方式将这个圆柱体放置在 Wheel 物体下,使其成为 Wheel 的子物体。

5.为Car添加Rigidbody组件,然后设置质量为1000。

        选中 Car 物体,在 Inspector 面板中,点击 Add Component 按钮,在弹出的搜索框中输入 Rigidbody,选择并添加 Rigidbody 组件。添加完成后,Rigidbody 组件将赋予车身物理属性,使其能够响应重力、碰撞等物理效果。在 Rigidbody 组件的参数设置中,将 Mass(质量)属性设置为 1000。较大的质量可以使赛车在行驶过程中具有更好的惯性,模拟出真实赛车的重量感,使操控更加符合现实逻辑。

6.为每个Wheel 添加Wheel colider组件。

        依次选中每个 Wheel 对象,在 Inspector 面板中点击 Add Component 按钮,搜索并添加 Wheel Collider 组件。Wheel Collider 组件专门用于模拟轮子的物理行为,包括与地面的接触、摩擦力等。添加完成后,根据实际需求对 Wheel Collider 组件的参数进行调整,如 Radius(半径)可根据轮子模型的大小进行设置,Spring(弹簧)、Damper(阻尼)等参数可用于模拟轮子的悬挂效果,以调整赛车在行驶过程中的稳定性和操控性。

7.调整轮子和碰撞器以及车身的位置。

        仔细检查轮子、碰撞器以及车身之间的相对位置关系,确保它们在视觉上和物理逻辑上都处于正确的位置。轮子应均匀分布在车身底部的四个角,且与地面保持合适的接触距离。碰撞器的位置应准确贴合轮子和车身的形状,以确保碰撞检测的准确性。通过微调各个物体的位置和旋转角度,使整个赛车看起来更加协调,并且在物理模拟中能够正常运行。这一步骤需要耐心和细心,反复进行测试与调整,直到达到满意的效果。

8.创建脚本Carcontrol,挂载到车身Car上。

        在 Project 面板中,右键点击 Create,选择 C# Script,将其命名为 Carcontrol。双击打开该脚本,开始编写控制赛车移动的代码。编写完成后,将 Carcontrol 脚本直接拖拽到 Car 物体上。这样,脚本就与车身关联起来,能够对赛车的移动和转动进行控制。在编写脚本时,需要充分考虑赛车的物理特性以及玩家的操作习惯,实现流畅且精准的操控体验。​

9.Carcontrol代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Carcontrol : MonoBehaviour
{
    public WheelCollider[] frontwheels;
    public WheelCollider[] backwheels;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float xvalue = Input.GetAxisRaw("Horizontal");
        float zvalue = Input.GetAxisRaw("Vertical");
        foreach (var wheel in frontwheels)
        {
            wheel.steerAngle = xvalue * 30;
        }

        foreach (var wheel in backwheels)
        {
            wheel.motorTorque = zvalue * 300;
        }
    }
}

五.运行结果


六.结语

         从基础物体的搭建,到物理组件的添加,再到脚本控制代码的编写,每一步都为构建完整的赛车游戏迈出了坚实的一步。希望读者通过实践本文内容,不仅掌握了在 Unity 中实现物体移动的基本方法,还能在此基础上进行创新与拓展,开发出更加丰富有趣的赛车游戏。

网络视频资源,如有侵权请留言/举报,资源过大上传乃是下载链接!!!------ 『课程介绍』:1 S/ V q2 z {+ ~( j 相信男生们都喜欢玩爽快的赛车游戏,那么你是否想要自己开发这样的一款游戏呢?在这里你将使用unity的开发技术,自己创建一个开发的,竞争性的赛车世界。同时可以让用户对汽车进行换装。- P8 z# u5 t' z1 @' w# c - F1 c. D: y3 c: o 『课程目录』: 任务1: 游戏演示 04:01 任务2: 创建工程,添加环境,添加车. n& c' W: j) [0 N 06:07 任务3: 给车添加碰撞器1 k: n' t- s0 ?7 _- |: }' e! O 03:17 任务4: 车的阴影设置* J, e. b0 _1 P( A7 C' x 03:29 任务5: 给车添加投影/ a5 \& I9 i& ~% d- R4 O 07:47 任务6: 关于WheelCollider车轮碰撞器% ^2 O% b' E" ?; U) K7 L1 O 06:10 任务7: 给车子添加车轮 05:29 任务8: 控制车子的前后行进 任务9: 控制车子的左右转向 04:51 # C6 v5 _/ O1 V& q5 c 任务10: 控制摄像机的跟随移动2 J( j: W' N3 D( y) B 06:51 任务11: 控制摄像机的平滑跟随5 d( P' H# L' |9 F: R7 F+ p 09:31 任务12: 解决车子侧翻的问题7 l" J8 q3 T: u! V 06:01 3 {1 V6 c8 K% c6 B/ ?" O+ C 任务13: 显示车子的速度( c2 L4 C& @" T, I+ f- J$ E 13:24 任务14: 使用仪表盘显示速度# J/ n; ~/ R7 | 12:18 8 v+ V8 u4 x0 J, O8 M+ ? 任务15: 控制轮子的转动- M* [) D$ D; I* z" ~1 A 08:22 任务16: 控制轮子的转向 06:08 任务17: 控制车的最大速度和最小速度; u+ p" j$ z" A; h ? 08:42 任务18: 给车添加刹车的功能3 M* x1 q6 ^2 r' \ 05:26 任务19: 给游戏添加背景声音 03:21 3 m0 A* G' S+ Z 任务20: 给车子添加引擎声音$ F4 O8 y# Z7 ~: M9 u 07:02 + W$ S* Z" i/ h$ Q 任务21: 添加引擎加速效果的声音7 p' T8 }) r- |, M 07:34 任务22: 控制车子的漂移 05:48 任务23: 添加漂移的声音! j" b* {, k) T, F: } 02:42 + {5 J, }5 K* }* j5 `; i6 O | 任务24: 添加漂移的条件,判断轮子是否着地 07:02 任务25: 添加倒车的警示灯 04:41 任务26: 添加赛车到达终点的判定 11:57 ' D3 e) h1 i2 J4 ?/ E 任务27: 添加倒计时效果! x, y6 I( y! ?9 j- @; E$ ?! I 07:27 ! J0 F9 H; F% | 任务28: 开发计时期间的引擎发动效果5 \; v) f" w' F6 _! a+ g) ?2 B# o! i. M 10:16 任务29: 设计游戏开始的界面 07:02 1 r0 w- P; i# ^; l, c& E& I: a. H 任务30: 处理游戏用户名的存储和按钮的事件( O0 d7 p" _2 l, l4 l 06:06 5 {& N: C3 E* r; i5 n 任务31: 开发赛车选择界面, m; s q4 O# i1 {' v; p 10:44 任务32: 开发赛车的总用时计时 08:18 1 }$ x0 C% ^! i4 V7 k 任务33: 游戏数据的存储,把最快的时间存储起来 07:12 7 O) P8 \: C4 y9 r. D 任务34: 控制轮子位置随着悬挂系统的弹簧的伸缩而伸缩, d# `8 b5 x" j9 J 12:49 任务35: 添加车子的划痕! L$ A. Y" b1 j- b1 U3 R 19:31 任务36: 处理车子和墙体之间的碰撞! [5 I% d/ Z! M# ~: L8 g 04:21 . b) N! L% a% O! x 任务37: 实现第一人称视野的控制' n( R0 Y& h2 I4 C# _$ d 05:01 任务38: 学习Terraintoolkit地形编辑插件 10:23 ' w% J* U" f% y5 d3 b" l0 h8 r 任务39: 对代码进行结构优化 12:56 任务40: 修改赛车的控制方式,添加重力感应控制' {* c+ l( x" G, _( n4 N$ W 08:57 : H2 B! Y( w7 L- @. [" W: g \3 y; V) K 任务41: 控制不同平台下车辆控制的启用, L9 n9 l3 T7 B J% C 03:54 任务42: 控制某些脚本得到物体的方式) c( U, m0 ?. Q; A 05:29 任务43: 控制场景的在安卓平台导入设置 05:24 任务44: 设计安卓平台的游戏环境,发布游戏到安卓平台2 ?, K% k; b1 @ 04:56 任务45: 项目结束分析,游戏项目结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值