目录

  • 1.地面与角色的碰撞检测
  • 2.操作过程中人物消失不见
  • 3.墙上控制

以下内容是对自己制作过程中遇到问题的记录,不一定科学准确。

1.地面与角色的碰撞检测

当人物下落速度较大时,有时会出现人物穿过地面或嵌入到地面中的情况。

当使用Tilemap制作地面时:

  • 为其添加Composite Collider2D组件
  • 将上述组件中的Geometry Type选为Polygons
  • 将Tilemap Collider2D中的Used By Composite勾选

按上述方法操作之后,原本空心的地面就成为了实心,可以一定程度上减少上述问题的发生。

对于人物,如果使用到了Rigidbody 2D组件:
可以将Rigidbody 2D组件中的Collision Detection选为Continuous
同时将Sleeping Mode选为Never Sleep

按上述方法操作之后,可以增加检测频率,可以在一定程度上减少速度太快导致没有检测到的情况。

2.操作过程中人物消失不见

如果人物图像反转使用修改transform.localScale来实现,要避免人物控制的代码中出现将transform.localScale.x置为0的情况。

不小心将transform.localScale.x置为0将会出现人物掉出地面的情况:

3.墙上控制

可以通过碰撞体或射线(我所了解的)来检测角色一侧与墙面是否接触。

以碰撞体为例,当处于空中的某个状态并检测到角色接触到墙面时,角色将吸附到墙上:


如果有如下需求:

  • 从贴墙状态解除
  • 蹬墙跳(与墙相反的方向)
  • 贴墙跳(与墙相同的方向)
  • 蹬墙冲刺(与墙面相反的方向冲刺)

以上操作看似简单,但我在实际制作时会遇到一些问题,如何协调”从贴墙状态解除“与下面几个操作的关系我是认为比较重要的。既然已经从贴墙状态解除了那么就不再是从贴墙状态向其他状态的转换了,自然很难做出丝滑精准的操作。

以蹬墙跳为例:
贴在左墙时,按下右方向键和跳跃键将会触发蹬墙跳跃,向与墙面相反的方向进行斜上跳跃
一般情况下,贴在左墙按下右方向键将会解除贴墙状态,如果贴墙状态下可以刷新二段跳跃,在解除贴墙后再跳跃则只能进行一次跳跃,这不是我所希望的。

同时还有贴墙跃,在进行这些操作时我不希望刚进入跳跃状态就立刻又转为贴墙状态,而是希望能够贴着墙面逐步向上攀跳。

对于贴墙反向冲刺,在进行操作时希望从贴墙状态直接转到冲刺状态而非解除贴墙后在空中冲刺。

为了同时解决以上问题,我所想到的一个简单解决办法是在进入贴墙状态时开启一个计时器,按下与墙面相反的方向键时计时器将会减少,否则更新,当计时器减为0时将解除贴墙状态,而计时器时间就是一个操作空间,在这个时间内是仍处于贴墙状态的。

这里计时器时间长短的设置是关键(比如0.25s):

  • 计时器时间太长,玩家迟迟不能解除贴墙状态,可能会影响操作
  • 计时器时间太短,玩家进行墙上操作的空间太小,可能使用不出相关操作

【2D游戏制作笔记】如何做出较好的角色操作手感相关推荐

  1. Unity-业余2D游戏制作笔记02-Dialogue System for Unity使用

    纯新手,仅用于记录个人学习中遇到的问题. 目录 当前目标: C#的变量数值和LUA代码连接 (一)Dialogue System任务流程里简单的LUA代码修改变量 (二)Lua通过调用C#函数,来修改 ...

  2. 【2D游戏制作笔记】给游戏战斗增加一点打击感

    目录 1.敌人颜色改变 2.相机震动 3.击退效果 4.受击特效 5.音效 以下内容是对自己制作过程中遇到问题的记录,不一定科学准确. 1.敌人颜色改变 学习链接 当敌人受到攻击时,改变敌人图像的颜色 ...

  3. Unity-业余2D游戏制作笔记01-Dialogue System for Unity使用

    纯新手,仅用于记录个人学习中遇到的问题. 目前进度: 已完成几个人物角色的移动,基本场景,简单的背包和箱子,简单的保存和加载. 刚开始学习使用Dialogue System for Unity插件和L ...

  4. Scanvenger游戏制作笔记(三)Unity3D创建对墙体的攻击

    Scanvenger游戏制作笔记(三)Unity3D创建对墙体的攻击 前言 一.给墙体增加一个刚体 二.添加标签以便确认 三.脚本 四.Wall 的脚本 五.攻击动画 系列链接 前言 本文章是我学习S ...

  5. Scanvenger游戏制作笔记(八)Unity3D关卡胜利条件的判断

    Scanvenger游戏制作笔记(八)Unity3D关卡胜利条件的判断 前言 一.每次移动判断是否到达终点 二.在移动函数中判断目标位置是否为终点 三.关卡胜利后,进入下一关 四.保留GameMana ...

  6. Ruby‘s Adventrue游戏制作笔记(四)Unity绘制其他元素

    Ruby's Adventrue游戏制作笔记(四)Unity绘制其他元素 前言 一.修改地图层级,将Order in Layer 提高到-10 二.创建Prefabs 三.调整人物在其他元素的位置 四 ...

  7. Ruby‘s Adventrue游戏制作笔记(十一)Unity角色攻击——发射子弹

    Ruby's Adventrue游戏制作笔记(十一)Unity角色攻击--发射子弹 前言 一.编辑子弹 二.创建脚本 三.修改玩家攻击脚本 四.将子弹拖入玩家脚本 五.让子弹碰撞到该碰撞的东西 六.编 ...

  8. Ruby‘s Adventrue游戏制作笔记(十四)Unity播放游戏音效

    Ruby's Adventrue游戏制作笔记(十四)Unity播放游戏音效 前言 一.创建背景音乐 二.创建新的脚本 三.在其他需要播放的所有脚本中进行操作 四.给敌人添加音效 五.给玩家添加移动音效 ...

  9. Ruby‘s Adventrue游戏制作笔记(十二)Unity给角色添加简单的特效

    Ruby's Adventrue游戏制作笔记(十二)Unity给角色添加简单的特效 前言 一.把特效物品进行切割 二.创建 particle System 三.创建彩色球 四.再设置一下其他属性 五. ...

最新文章

  1. AMD宣布350亿美元收购赛灵思,CPU、GPU、FPGA全凑齐,中国握有否决权
  2. 如何在Spyder中运行spark
  3. Citrix VDI攻略之三:DDC安装及配置
  4. JNI学习积累之二 ---- 数据类型映射、域描述符说明
  5. 【网络编程】之六、选择select
  6. 曹大带我学 Go(6)—— 技术之外
  7. 初识ABP vNext(9):ABP模块化开发-文件管理
  8. 真实不装| 阿里巴巴新人上路指北
  9. 全站HTTPS底层实现原理
  10. Linux编程 7 (实时监测进程 top, 结束进程kill,killall)
  11. 笔记随笔1(webpack,vue-router,vuex)
  12. FPGA系统设计考虑因素
  13. 【零基础学Java】—自定义异常(四十八)
  14. 诹图系列(3): 条形图
  15. 2012最新网上购物排行榜
  16. CAN通讯进阶-基于Python使用dbc文件解析CAN数据(dbc文件的创建、使用方法)
  17. 杰奇2.4UTF安装教程+关关远程采集
  18. vb.net html元素,vb.net 教程 12-3 HtmlElement类 1
  19. vue关闭eslint语法检查
  20. 盘点3种生涯的决策类型和方法,看看你是哪种类型?|【生涯荐读】

热门文章

  1. 外贸跟客户讲价有什么技巧?
  2. [讨论] 2015-8-13日 主题:关于指针和堆栈
  3. 50条超级变态的网名
  4. ChinaJoy2018英特尔再度霸气包馆,这些理由让你不得不来
  5. 如何评估及应用一些灰色推广产品
  6. JavaScript原生——实现一个轮播图
  7. 基于django奶茶店管理系统
  8. 「RISC-V Arch」 初识 RISC-V
  9. 在visio中将图片变成黑白,将图片对象进行颜色转换 彩色图转灰度图
  10. 学习笔记三十:IO流(二)