位置: 编程技术 - 正文

第三人称控制(第三人称控制器在平面上老掉)

编辑:rootadmin
第三人称控制前言

推荐整理分享第三人称控制(第三人称控制器在平面上老掉),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:第三人称控制器是自己写还是用现成的,第三人称控制器,第三人称控制器控制镜头锁,第三人称控制器在平面上老掉,第三人称控制器中的人物能做什么动作,第三人称控制器运行显示所有的编辑器错误,第三人称控制器,第三人称控制器,内容如对您有帮助,希望把文章链接给更多的朋友!

经过一段时间的Unity 3D学习,练习制作了一个简单的游戏Demo。该Demo实现了一个简单的RPG副本,英雄杀死两种怪兽游戏即获胜。 该Demo使用Unity 3D的版本为 4.6.4f1。

游戏采用第三人称视角(3rd Person Controller),但是Standard Assert中的3rd Person Controller不能满足要求。因此,自己动手实现一个第三人称角色控制。下面将从角色(英雄)控制与Camera控制两方面介绍第三人称控制的实现。

英雄控制旋转与移动

给英雄添加Character Controller组件。通过水平和垂直虚拟轴获取玩家输入,垂直虚拟轴控制前进后退,水平虚拟轴控制旋转(此过程也带动Camera绕英雄旋转)。只有当英雄在地上时方能操作,也就是controller.isGrounded==true。 旋转的关键代码

移动的关键代码。首先根据输入,获得移动的本地方向向量,然后将其转为世界坐标系中的方向。

跳跃

考虑重力的影响,每一帧都会给英雄一个向下的速度movingDirection.y -= gravity * Time.deltaTime; //重力影响。当跳跃时,给英雄添加一个向上的速度初速度:

动画

英雄移动过程中,播放相应状态的动画。当玩家没有操作时,需要自动切换到Idle动画,由于攻击动画是触发式的,必须等待期播放完毕才能切换到其他状态的动画,使用_animation.IsPlaying(clip.name)可以判断某动画片段是否播放完毕。

死亡

英雄死亡时,需要播放死亡动画,之后并处理后续工作,例如通知游戏结束。这里采用协同程序实现。

第三视角Camera控制

第三人称的主摄像机需要时刻跟随英雄移动,考虑到英雄的跳跃、动画时不确定的移动、死亡(可能销毁GameObject)等状态,游戏中没有将主摄像机作为英雄的子节点,降低耦合。同时,为了方便不同视角的观察角色,需要根据玩家的操作调整视角。因此,需要解决Camera的移动、相对英雄的位置和距离变化等问题。

旋转和移动第三人称控制(第三人称控制器在平面上老掉)

当英雄旋转时,Camera也同方向、同轴旋转,但是角速度要小于英雄旋转的角速度(避免旋转太快产生眩晕)。

Camera的移动向量由英雄的移动向量获取。但是考虑以下两种情况:1.英雄跳跃;2.英雄当前遇到障碍物。

游戏中,英雄跳跃时,Camera不会跳跃,英雄时刻受重力影响会有一个垂直向下的速度,但Camera不受重力的影响。因此,Camera在y方向的变换为0,只有根据玩家的操作变化。

当英雄遇到障碍物,但移动向量不为零时,Camera是不移动。具体代码如下所示:

视角调整

视角有三种变换: 1. 以英雄的up为轴,在xz平面旋转; 2. 调整高度,升降; 3. 推进或者远离角色;

方式1水平旋转比较简单,也没有限制。

其中,2和3需要做边界限定。2不能将camera降到地面以下或者升到英雄的正上方,3不能无限制的推进或者远离。 方式2高度通过向量(英雄,Camera)与水平面的夹角限制。该夹角的Tan值,也就是Camera相对英雄的高度H/水平距离D。

方式3通过限制Camera与英雄的相对距离实现,调整距离过程中采用平滑插值Lerp,避免跳跃性太大。

版权声明:本文为博主原创文章,未经博主允许不得转载。

unity3D 在屏幕边框创建碰撞框 privatestaticGameObjects_aroundCols;publicstaticvoidCreateAroundColliders(){if(s_aroundCols!=null)return;s_aroundCols=newGameObject(aroundCols);s_aroundCols.transform.position=Vector3.zero;s_aroundCol

协同程序Coroutine 协同程序可以和主程序并行运行,但是在任一指定的时刻只会有一个协同程序在运行,别的协同程序则会挂起,协同程序可以用来实现让一段程序等待

unity3d 半自动化从模型资源生成AnimatorController 这个问题,只要苦的手动拖过大量模型、动画的朋友都是深有体会的。比如,2、个模型要弄,拖clip做动画控制器要把你给整崩溃。。。好容易拖好了

标签: 第三人称控制器在平面上老掉

本文链接地址:https://www.jiuchutong.com/biancheng/368399.html 转载请保留说明!

上一篇:Cocos2d开发手记——bug篇(一)(cocos2dx 教程)

下一篇:unity3D 在屏幕边框创建碰撞框(unity3d界面布局)

  • 增值税金税盘开票的结论
  • 税金及附加二级明细
  • 税务师考试咨询电话
  • 哪些科目会影响损益
  • 小规模 季度
  • 分公司可以独立开银行账户吗
  • 支付的检测费计入什么科目
  • 小微企业季报
  • 经营性文化事业单位有哪些
  • 水泥企业销售收入比例
  • 应付账款收不回,可否转营业外收入
  • 多出来的费用
  • 小企业所得税申报流程
  • 企业购买的黄金计入什么科目
  • 咨询服务企业发展瓶颈期
  • 离退休人员再任职的规定
  • 三证合一后没有去税务局登记会怎么样
  • 事业单位的房租上缴国库吗
  • 物业费收入的增值税税率是多少
  • 简易征收税率都包括什么
  • 税务实名制法人和财务负责人可以是同一人吗?
  • 福利费申报个人所得税该如何进行?
  • 违约金的涉税处理
  • 筹建期间职工福利费都要通过应付职工薪酬核算吗
  • 电费冲销是什么意思
  • 不交社保一告一个准罚多少钱
  • 金蝶软件不审核直接过账
  • 微信支付宝余额为零的表情包
  • 收到预付款是否确认收入
  • 实收资本属于会计准则吗
  • 企业接受捐赠的固定资产账务处理
  • 货物质量赔偿需要改变收入吗合法吗
  • 如何回到一年前的方法
  • Yosemite使用技巧 如何使用Yosemite mac信息功能共享电脑屏幕教程
  • php header Content-Type类型小结
  • pytorch中的数据类型
  • axios用法示例
  • 简述php操作mysql数据库的基本步骤
  • vuejs echarts
  • 入库税款异常怎么处理
  • 总公司发票可以入账分公司吗怎么做账
  • 一般纳税人收取停车费的税率
  • 出口货物 增值税
  • 递延收益金额怎么算
  • 资产负债表日后非调整事项应当在附注中披露
  • 提取盈余公积金
  • 其他税后扣减
  • 企业退款给个人多久到账
  • 利润表期初余额怎么填
  • 在途物资和材料采购的区别
  • 金融企业借款费用计入
  • freebsd12安装
  • 微软每月补丁更新一般于什么时间发布
  • office2016formac更新了什么 新版macoffice软件功能一览
  • os x10.11el capitan beta4更新了什么?os x10.11el capitan beta4下载地址
  • mac屏幕共享软件
  • linux运维是必死之路
  • windows设置tomcat自动重启
  • 电脑word程序
  • win7怎么进行系统还原
  • win10 rs3
  • giantantispywaremain.exe是什么进程 有什么作用 giantantispywaremain进程查询
  • linux修改分组
  • win7的收藏夹在哪里
  • win10打开iis管理器命令
  • win8的控制面板在哪里打开
  • win8怎么恢复出厂设置找不到恢复环境
  • opengl矩形
  • node远程ssh
  • python的pip安装命令
  • 使用struts2+Ajax+jquery验证用户名是否已被注册
  • unity3d documentation
  • 利用jQuery实现一个时间无法显示
  • python,多线程
  • 税务系统跨区调动
  • 珠海南湾国际属于香洲哪个街道
  • 查册证明怎么自动生成
  • 小区配电房移交供电局的依据
  • 长沙市各个区的县市排名
  • 宣城国税局电话是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设