
本文共 2285 字,大约阅读时间需要 7 分钟。
游戏引擎:Unity 版本:2019.4.6f1 【2017版本以上均可】
前言
交互门,是众多游戏中最为基础、常见的一种玩家与游戏场景的交互体验。本文将主要叙述记录关于交互门的制作思路、制作方法、制作过程中可能出现的一些问题上的疑难解答,以及拓展内容上需要注意避免的坑。
指导说明 ■ -指 这是一个Unity默认初始组件 ■ -指 Unity内置方法 ■ -指 这是一个重点【这个重点可能对全局操作有影响】本文基础知识点
你需要做好以下准备以便于更好理解:
1. 了解Unity工作界面 2. 熟悉掌握Unity常用基本组件 - ■ AudioSource - ■ BoxCollider - ■ Animator - ■ Animation 3.C#脚本开发语言■ 注:若上述知识点尚未完全掌握,本文会提及内容讲解,但理解上可能会吃力,请谅解,或对知识点内容进行详细了解后再看本文。
—【若文章有遗漏或错误知识,请及时通知博主更新纠正】—
思考
游戏源于生活,一切的游戏交互都是基于生活的现实体验来制作。根据生活反应,交互门的类别分为 手动门 与 自动门。如图示:
最为常见的交互方式
手动门 | 需要直接接触 【门】的交互方式 |
---|---|
推门 | 施加一个作用方向的水平推力 |
锁门 | 需要以一把钥匙作为是否允许交互媒介 |
在银行、酒店等高档消费场所见到的交互方式
自动门 | 不需要直接接触【门】的交互方式 |
---|---|
纯自动门 | 侦测对象是否出现在探测范围内 |
权限门 | 基于纯自动门,确认是对象且持有相应【权限】 |
密码门 | 需要输入正确密码 |
杂项类 | 指纹识别/眼睛识别/人脸图像门… |
源于动画、小说中描述的交互方式
□□门 | 拥有特殊功能的门交互方式 |
---|---|
电网门 【SCP:ContainBreach】 | 对任何靠近电网的对象触发电击效果,每次电击生效间有时间间隔 |
传送门【多啦A梦 任意门】 | 【初级】-通过触发锚点来实现对象的坐标变化 |
【中级】-实时显示终点画面来给予视觉上差异 | |
【高级】-增强角色在使用传送锚点的交互体验 |
注:本文章不会讲解传送门相关内容,相关知识请移步以下链接。 非欧空间【了解】: 传送门【实战】:
分析
结合Unity游戏引擎提供的API,目前提供的实现思路有两种思路。
一、利用■ BoxCollider(碰撞器) 实现逻辑
以门自身为对象,挂载■ BoxCollider(碰撞器) 组件,勾选"Is Trigger",通过检测玩家进出触发区域实现门的交互行为。

关联UnityAPI 【C#语言】 有:
UnityAPI | 说明 |
---|---|
OnTriggerEnter | 进入触发器 仅执行一次 |
OnTriggerStay | 在触发器内 每帧执行一次 |
OnTriggerExit | 离开触发器 仅执行一次 |
上述3种API方式在Unity中的实现玩家与场景的交互行为上的使用频率较高。当然,并不仅限于通过这3种方法。Trigger(触发器) 在Unity中并没有作为组件出现,而是在■ Collider(碰撞器)中担任一功能出现。 ■即:只要是■ Collider(碰撞器)且组件下的 “Is Trigger” 均勾上,都能在C#脚本语言中实现触发器。
常用基本■ Collider(碰撞器)
(■ 注意:以下组件均用于3D场景,2D场景均不适用。)
■ BoxCollider(盒碰撞器)



注:Add Component中,搜索"Trigger"会显示 ■Event Trigger(事件触发器),其不是文章提及的 Trigger。
二、利用■ Raycast(射线)的实现逻辑
以玩家自身为对象,由玩家身上的■ Camera(相机)发射■ Raycast(射线),根据■ RaycastHit(射线碰撞点)是否为门,进而实现门的交互。

关联UnityAPI【C#语言】有:
UnityAPI | 说明 |
---|---|
Physics类 | 全局物理属性和物理方法 |
Raycast | 投射光线,从点开始向一个方向投射一定长度,与有碰撞器的物体相撞 |
RaycastHit | 返回射线碰撞信息(需要对象有碰撞器) |
小结
无论是■ Collider(碰撞器)还是■ Raycast(射线)均可实现门的交互行为。从笔者角度,在实现角色的一些交互行为上更偏向于使用■ Collider(碰撞器)来实现一些交互行为,不用强加于玩家身上的交互脚本上因为交互内容增多而导致代码量增加。所以后面实现篇更倾向于选择■ Collider(碰撞器)来实现这一交互行为。
发表评论
最新留言
关于作者
