Unity 2d 有关陷阱的制作

本文详细介绍了如何在Unity3D中实现四种类型的陷阱:地刺(包括普通和隐形)、摆锤、射击类陷阱以及移动类齿轮。通过检测框、碰撞检测和Rigidbody组件,结合脚本编程,实现触发机制、摆动行为和自动瞄准等功能。文章还提供了具体的代码片段和设置建议,适合初学者学习游戏陷阱设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用的陷阱

1.地刺

2.摆锤

3.移动类齿轮

4 发射器。

主要实现的方式(目录 后面每一种会具体讲)

1.  制作检测框(当角色进入检测范围内时才启动,仅适用于发射类 和隐形地刺类)

2. 制作陷阱本体 使用抽象类 abstract  由于 检测人物的 碰撞框 碰到 陷阱而扣血(区分与检测框不同)。

3.制作任务碰撞框设定无敌时间。

一 .  先从最简单的 普通地刺

 

 首先检测到player 并且 因为有多个碰撞框防止一次触碰多次扣血 因此限定只碰撞 胶囊体碰撞框

并且将这个脚本设为抽象类 方便其他陷阱直接用。

关于最简单的地刺就直接 继承这个类就可以了

同理摆锤的本体也直接继承这个。

二. 地刺的进阶 隐形地刺(只有当player靠近到一定范围内才出现)

这里指出几种实现方法 

方法1. 设定一个半径当player的距离 靠近到陷阱一定范围内时  陷阱的 set active 变为true  离开一定距离后变成 false

方法2. 建立一个新物体赋予他一个box检测框 当 检测到player进入检测框 陷阱 set active 变为true 离开检测框变成 false

这里主要讲 方法二 不考虑效率问题(单纯因为方法2的框可见方便调节)如图

 做完这个然后将它与陷阱本体 放在同一个文件夹里面 然后将他做成预制体即可

三.  摆锤类  摆锤本体的碰撞扣血 同上 

主要介绍 摆锤的实现  

这里DiStance joint 2d 放到摆出本体里面

其中connect rigid Body 设置为如图选中的那种当作锚点

到这里已经能实现摆锤的摆动了

然后是 如何实现 摆锤的连接线

先添加 lineRender 

然后在脚本里面进行对具体数据的更改。

 

设置颜色,首尾相连(loop) 

设置线段的首位

 然后设置宽度

划重点  材料千万别忘记填写 点那个圈圈即可。

 

另外别忘记该图层不然显示不出颜色。

 四. 射击类陷阱的制作 

制作分两部分

1. 发射器功能: 用于自动瞄准并朝向player (同时也具有一个检测框当player进入时激活) 

2.子弹 : 功能 打到player扣血 发射超过一定距离自动销毁。

实现: 发射器功能

1.首先 以发射器位置为原点建立平面直角坐标系 

2.然后 拿player的位置减去 发射器位置求出单位向量 即发射的方向

3.下面那几行是为了防止旋转式发生发射器方向倒转

4.instantiate 生成已经制作成 预制体的子弹

5.最后运用 简单的update 计时器实现 发射间隔

(那个 muzzle 是我给player建立的一个子对象 用于方便调节具体的发射位置(毕竟用枪射击的时候子弹是从枪口发射的而非是从枪的其他位置发射)。

 

 

 2.子弹

 然后给初学者说下 实现的原理   

首先 子弹的射击我这里运用的是 以固定的 方向射击

即以 那个红色的(transform.right)为方向进行射击 

那么如果想要改变射击的方向 那么就可以直接改变它生成时的 方向即让 这个transform 旋转到想要的角度 因此 再instantiate里的旋转角度 用Quaternion.Euler(transform.eulerangle),其中括号里面的内容发射器旋转的角度

        五. 左右移动类齿轮攻击陷阱

其中齿轮本身还是直接继承之前写的抽象类函数。

移动的话比较简单 建立一个 transform 数组movepos   和一个整型 变量 a

 位移到 一端 就异或 1 解释:(0^1==1,1^1 ==0) 这样就实现了移动到一端 后再移动到另一端。

本课序言今天我给大家带来的这门课是一款单机游戏,游戏属于初级。 课程的目标:帮助Unity3D初学者通过学习本课程成为一名合格的游戏开发者人员。 学习这门课的技术基础:对C#语言和和Unity3D有基本的了解,越熟悉越好。 适合的人群:具备高中以上的文化基础,对游戏开发有浓厚的兴趣;或希望使用Unity3D进行一些行业类的仿真开发,如水利、工业、农业等等。 对于对Unity3D有一定基础的同学来说可以帮助你更加完整的认识到一款标准的游戏的制作过程,另外通过“C#编码规范”这一章节能够帮助你规范化你的代码编写习惯。 对于已经使用Unity3D一段时间的同学也可以学到很多东西,如“C#编码规范”规范化的代码、物理引擎的使用、动画插件Dotween的使用。 本游戏项目最大的特点是可以手把手一行一行的写代码来完成整个项目。初学者可以在我写代码的过程中学到书本上学不到的很多实用型的技术经验。如Unity的场景操作、C#代码的编写、写一款游戏的基本流程等等。 下面进行课程介绍   项目演示指导* 切换到已经打开的项目,看下规范的文件夹目录,并介绍下各目录的作用 * 以全屏的方式从Start场景打开游戏 * 点击开始游戏,通过键盘上的WSAD键控制场景中的小球,玩家的任务是通过各个关卡最终到达目的地 * 两个敌人关卡:先通过第一个敌人,然后撞上第二个敌人,然后退到第二个场景,通过“继续游戏”接着上次死亡的位置接着玩,通过两个敌人的关卡 * 推箱子关卡:控制小球掉到沟里,退到第二个场景,通过“继续游戏”接着上次死亡的位置接着玩,推箱子到沟里,通过这关 * 草丛关卡:解释因为是草丛,有摩擦力所以小球会慢 * 坐船关卡:第一次没上船,掉下失败,退到第二个场景,通过“继续游戏”接着上次死亡的位置接着玩,上船过关 * 空中电梯头上:第一次踏空,第二次上了平台又掉下,第三次过关,上了终点台后转悠几秒后到达终点
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小户爱

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值