游戏引擎:Unity
版本:2019.4.6f1 【2017版本以上均可】

前言

  交互门,是众多游戏中最为基础、常见的一种玩家与游戏场景的交互体验。本文将主要叙述记录关于交互门的制作思路、制作方法、制作过程中可能出现的一些问题上的疑难解答,以及拓展内容上需要注意避免的坑。

指导说明
  ■ -指 这是一个Unity默认初始组件
  ■ -指 Unity内置方法
  ■ -指 这是一个重点【这个重点可能对全局操作有影响】

本文基础知识点

  你需要做好以下准备以便于更好理解:
   1. 了解Unity工作界面
   2. 熟悉掌握Unity常用基本组件
   - ■ AudioSource
   - ■ BoxCollider
   - ■ Animator
   - ■ Animation
   3.C#脚本开发语言

  ■ 注:若上述知识点尚未完全掌握,本文会提及内容讲解,但理解上可能会吃力,请谅解,或对知识点内容进行详细了解后再看本文。

—【若文章有遗漏或错误知识,请及时通知博主更新纠正】—

思考

  游戏源于生活,一切的游戏交互都是基于生活的现实体验来制作。根据生活反应,交互门的类别分为 手动门 与 自动门。如图示:

最为常见的交互方式
手动门 需要直接接触 【门】的交互方式
推门 施加一个作用方向的水平推力
锁门 需要以一把钥匙作为是否允许交互媒介
在银行、酒店等高档消费场所见到的交互方式
自动门 不需要直接接触【门】的交互方式
纯自动门 侦测对象是否出现在探测范围内
权限门 基于纯自动门,确认是对象且持有相应【权限】
密码门 需要输入正确密码
杂项类 指纹识别/眼睛识别/人脸图像门…
源于动画、小说中描述的交互方式
□□门 拥有特殊功能的门交互方式
电网门 【SCP:ContainBreach】 对任何靠近电网的对象触发电击效果,每次电击生效间有时间间隔
传送门【多啦A梦 任意门】 【初级】-通过触发锚点来实现对象的坐标变化
【中级】-实时显示终点画面来给予视觉上差异
【高级】-增强角色在使用传送锚点的交互体验

 注:本文章不会讲解传送门相关内容,相关知识请移步以下链接。
    非欧空间【了解】:非欧几里得世界引擎
    传送门【实战】:【双语】游戏编程挑战:传送门 Coding Adventure: Portals

分析

  结合Unity游戏引擎提供的API,目前提供的实现思路有两种思路。

一、利用■ BoxCollider(碰撞器) 实现逻辑

  以门自身为对象,挂载■ BoxCollider(碰撞器) 组件,勾选"Is Trigger",通过检测玩家进出触发区域实现门的交互行为。

优点
  可拓展性:当玩家进入检测区域后,我们可拓展检测之后的反馈效果。
   - 直接执行门的开关交互。
   - 添加交互按键E,增加玩家开门需求条件。
   - 添加开门前提条件。 例如:需要玩家拥有某种特定物品、玩家必须为某一角色等。
  ■ 特别注意:这里的添加开门前提条件主要是写在门身上。

关联UnityAPI 【C#语言】 有:

UnityAPI 说明
OnTriggerEnter 进入触发器 仅执行一次
OnTriggerStay 在触发器内 每帧执行一次
OnTriggerExit 离开触发器 仅执行一次

  上述3种API方式在Unity中的实现玩家与场景的交互行为上的使用频率较高。当然,并不仅限于通过这3种方法。Trigger(触发器) 在Unity中并没有作为组件出现,而是在■ Collider(碰撞器)中担任一功能出现。
  ■即:只要是■ Collider(碰撞器)且组件下的 “Is Trigger” 均勾上,都能在C#脚本语言中实现触发器。

常用基本■ Collider(碰撞器)

  (■ 注意:以下组件均用于3D场景,2D场景均不适用。)
  ■ BoxCollider(盒碰撞器)

  ■ MeshCollider(网格碰撞器)

  ■ SphereCollider(球形碰撞器)

  ■ CapsuleCollider(胶囊碰撞器)

  注:Add Component中,搜索"Trigger"会显示 ■Event Trigger(事件触发器),其不是文章提及的 Trigger

二、利用■ Raycast(射线)的实现逻辑

  以玩家自身为对象,由玩家身上的■ Camera(相机)发射■ Raycast(射线),根据■ RaycastHit(射线碰撞点)是否为门,进而实现门的交互。

优点
  可拓展性:【同上】
   - 直接执行门的开关交互。
   - 添加交互按键E,增加玩家开门需求条件。
   - 添加开门前提条件。 例如:需要玩家拥有某种特定物品、玩家必须为某一角色等。
  ■ 特别注意:这里的添加开门前提条件主要是写在玩家身上。

关联UnityAPI【C#语言】有:

UnityAPI 说明
Physics类 全局物理属性和物理方法
Raycast 投射光线,从点开始向一个方向投射一定长度,与有碰撞器的物体相撞
RaycastHit 返回射线碰撞信息(需要对象有碰撞器)

小结

  无论是■ Collider(碰撞器)还是■ Raycast(射线)均可实现门的交互行为。从笔者角度,在实现角色的一些交互行为上更偏向于使用■ Collider(碰撞器)来实现一些交互行为,不用强加于玩家身上的交互脚本上因为交互内容增多而导致代码量增加。所以后面实现篇更倾向于选择■ Collider(碰撞器)来实现这一交互行为。

【Unity】制作交互门 (思路篇)相关推荐

  1. unity制作交互视频/互动视频

    unity制作交互视频/互动视频 思路 1.先让unity播放视频 2. 视频播放结束后,视频暂停,按钮出现 3.按钮跳转下一个视频 视频播放 先创建UI-Raw Iamge 在Raw Iamge 挂 ...

  2. Unity 制作萌系live2d桌宠:屏幕自适应+交互

    目录 准备工作 使用unity显示live2d人物 全屏+背景透明+点击穿透+置顶 屏幕自适应 交互 本文在之前的博客如何使用unity制作萌萌的live2d桌宠的基础上对项目继续改进,解决了屏幕自适 ...

  3. Unity制作格斗游戏核心思路总结

    http://anchorart9.com/2016/05/22/unity%E5%88%B6%E4%BD%9C%E6%A0%BC%E6%96%97%E6%B8%B8%E6%88%8F%E6%A0%B ...

  4. 【游戏开发实战】(完结)使用Unity制作像天天酷跑一样的跑酷游戏——第七篇:游戏界面的基础UI

    文章目录 一.前言 二.导入游戏界面UI素材 三.制作游戏界面UI预设 四.事件管理器 五.编写GameMainPanel.cs脚本 六.游戏管理器添加金币逻辑 七.加金币 八.跳跃事件 九.运行测试 ...

  5. 【有趣的Python小程序】Python多个简单上手的库制作WalkLattice 走格子游戏 (思路篇)上

    篇写上一个思路篇,那么今天我们就来完成这一项工作 源代码和配套文件 链接: https://caiyun.139.com/m/i?135ClY1yWrSKX 提取码:e4pq 复制内容打开中国移动云盘 ...

  6. 【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第一篇:人物动画序列帧

    文章目录 一.前言 二.创建工程 三.导入序列帧图片素材 四.设置图片格式 五.切割序列帧 六.制作序列帧动画 七.运行效果 一.前言 嗨,大家好,我是新发,今天是大年初一,大家牛年快乐,牛气冲天. ...

  7. 【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第三篇:跑酷地面制作

    文章目录 一.前言 二.导入地面素材 三.制作地面预设 四.使用脚本控制地面移动 五.起始和结束位置 六.复制多个地面预设 七.运行效果 一.前言 嗨,大家好,我是新发,今天是大年初三,大家牛年快乐, ...

  8. 【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第二篇:使用Animator控制跑酷角色的动画状态切换

    文章目录 一.前言 二.制作一段跳.二段跳动画 三.编辑动画控制器 四.运行效果 一.前言 嗨,大家好,我是新发,今天是大年初二,大家牛年快乐,牛气冲天. 我打算写一篇使用Unity制作像天天酷跑一样 ...

  9. 【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第六篇:金币创建与吃金币

    文章目录 一.前言 二.导入金币图片素材 三.制作金币预设 四.制作多个形状的金币阵列 五.金币创建器 六.运行测试 一.前言 嗨,大家好,我是新发. 我打算写一篇使用Unity制作像天天酷跑一样的游 ...

最新文章

  1. tnsnames.ora无法保存的问题
  2. 160个Crackme029
  3. caxa画图怎么倒角_16个底部含圆弧倒角的宽槽编程案例
  4. 我所理解的IRepository
  5. 多线程之间共享数据的实现
  6. 链表最终总结【数据结构】
  7. 真实的布兰妮,有点壮
  8. excel字符串和单元格拼接_Excel工作表中带单位求和的4个技巧,不掌握就真的Out了!...
  9. validate.js的使用
  10. Pytorch:Tensor(张量)的使用
  11. 网站盗取html文件工具,一键获取仿站精灵
  12. Industroyer:自震网病毒以来对工控系统的最大威胁
  13. Javaweb新手软件推荐
  14. wannier拟合能带总是拟合不上_科学网-Wannier90输入文件中num_wann, num_bands, 和energy window等参数设置规则-李云海的博文...
  15. 双目视觉 XYZ求解
  16. 鲁智深吃馒头,约瑟夫环问题
  17. Amy-Tabb机器人世界手眼标定(4、Windows)
  18. git使用,挖个坑站住先
  19. 《仙剑奇侠传4》精装版内容曝光
  20. jperf linux运行,Linux网络性能评估工具iperf

热门文章

  1. vue实现计算平均分
  2. 凹凸映射中的法线纹理贴图
  3. Rocket MQ详解
  4. 长按电源键,为Android手机添加自动重启Item
  5. 如何本地ssh远程登录阿里云服务器 ECS
  6. ❸OAK智能深度相机如何实现低延迟?
  7. Python学习笔记——搭建Windows下的基本环境Geany编译器
  8. 【week5】JAVA语言学习及复习
  9. 老版启用aero_在Windows Vista中启用慢动作Aero动画
  10. web前端日常更新 7.26