- 1、本文档共91页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
游戏引擎——第三人称摄像机控制
因为鼠标向前推,mouseY是正的值,但是此时摄像机应该相对角色做逆时针旋转的,逆时针旋转的角度是负的,顺时针才是正角度,所以需要用-=才能刚好使得符号对应上。 * 1. 重力和角色跳跃相关问题。 (1)重力是向下的,并且是时刻都存在的。其基本原理是总是让角色受到一个向下的力量。所涉及的变量是: public float Gravity; (重力) public float TerminalVelocity; (由重力所引起的最大向下速度) (2)关于跳跃,当角色跳离地面的一瞬间,重力即可发生实质作用。所涉及的变量为: public float JumpSpeed; * Free template from * 上述两个问题所涉及的函数为: ApplyGravity()和Jump(),由于是和角色的行为有关的,所以应该写在TP_Motor类中。 为了以后专门处理角色行为有关的输入,我们需要在TP_Controller类中增加一个HandleActionInput()函数。 1. 重力 * Free template from * 具体程序如下所示: 在TP_Motor类中添加如下代码: public float Gravity = 21f; public float TerminalVelocity = 20f; public float VerticalVelocity { get; set; } 添加一个函数ApplyGravity()如下: void ApplyGravity() { if(MoveVector.y -TerminalVelocity) MoveVector = new Vector3(MoveVector.x,MoveVector.y - Gravity*Time.deltaTime,MoveVector.z); * Free template from * if(TP_Controller.characterController.isGrounded MoveVector.y -1) MoveVector = new Vector3(MoveVector.x,-1,MoveVector.z); } 修改ProcessMotion()函数内容如下: void ProcessMotion() { // Transform MoveVector to World Space MoveVector = transform.TransformDirection(MoveVector); // Normalize MoveVector if Magnitude 1 if(MoveVector.magnitude 1) MoveVector = Vector3.Normalize(MoveVector); // Multiply MoveVector by MoveSpeed MoveVector *= MoveSpeed; // ReApply VerticalVelocity MoveVector.y * Free template from * MoveVector = new Vector3(MoveVector.x,VerticalVelocity,MoveVector.z); //Apply Gravity ApplyGravity(); // Move the Character in World Space TP_Controller.characterController.Move(MoveVector*Time.deltaTime); } * Free template from * 在TP_Controller类中的GetLocomotionInput()函数需要做如下修改: 在TP_Motor.Instance.MoveVector = Vector3.zero;这句话之前添加一句: TP_Motor.Instance.VerticalVelocity = TP_Motor.Instance.MoveVector.y; 目的是为VerticalVelocity变量赋初值,使得该变量保存之前角色在Y方向的速度。 测试程序,看看角色能否受到重力影响而落在地板上。 修改角色身上的TP_Motor组件的各个变量值,如Gravity,TerminalVelocity等,看看有什么效果。 * Free template from * 2. 角色跳跃的实现: 在TP_Motor.cs中添加一个新的变量: public float JumpSpeed = 6f; 添加一个新的函
您可能关注的文档
- 淘宝大学_网店运营专才_第5章54_服装类大件商品的拍摄.ppt
- 淘宝天下品牌运营策划案.ppt
- 淘宝消费者保障金.ppt
- 淘宝旅行培训中心.ppt
- 淘宝男装店装修细节实施方案.pptx
- 淘宝网商城购物.ppt
- 淘宝运营商积分合作.pptx
- 淘淘的金童玉女向你招手祝福.ppt
- 淡绿色授课模板如何使用互联网工具web-20.ppt
- 淡蓝写作模板:一周要闻写作Weekly News.pptx
- GB/T 14598.2-2025量度继电器和保护装置 第1部分:通用要求.pdf
- 中国国家标准 GB/T 14598.2-2025量度继电器和保护装置 第1部分:通用要求.pdf
- 《GB/T 14598.2-2025量度继电器和保护装置 第1部分:通用要求》.pdf
- 《GB/T 14598.26-2025量度继电器和保护装置 第26部分:电磁兼容要求》.pdf
- GB/T 14598.26-2025量度继电器和保护装置 第26部分:电磁兼容要求.pdf
- 中国国家标准 GB/T 14598.26-2025量度继电器和保护装置 第26部分:电磁兼容要求.pdf
- 《GB/T 19024-2025质量管理体系 面向质量结果的组织管理 实现财务和经济效益的指南》.pdf
- 中国国家标准 GB/T 19024-2025质量管理体系 面向质量结果的组织管理 实现财务和经济效益的指南.pdf
- GB/T 19024-2025质量管理体系 面向质量结果的组织管理 实现财务和经济效益的指南.pdf
- 中国国家标准 GB/T 20441.8-2025电声学 测量传声器 第8部分:测定工作标准传声器自由场灵敏度的比较法.pdf
文档评论(0)