unity3d之角色的移动篇 -- 俯视视角下的键盘移动番外篇
这是一个来自unity官网实例的行走脚本,经过我的简单整理后发布在这里,写的非常好,条理分明,一目了然,运行起来很有操作手感。
这个脚本是在animator系统下运行的,所以在写这个脚本前需要先对animator controller进行一些简单的设置:
1. idle状态(默认)和run状态(blend tree,混合了walk和run)
2.定义一个float类型的参数,idle->run(speed>0.1), run->idle(speed<0.1)
3.在run的blend tree里将speed作为过渡动画的参数自动匹配阀值(方法:Compute Thresholds,选择speed)
4.为主角添加刚体和碰撞器
5.勾选Apply Root Montion,使用模型行走的步伐来计算行走距离
using UnityEngine; using System.Collections;public class test : MonoBehaviour {public Animator anim;public Rigidbody rb;public float turnSmoothing = 15f; // 玩家平滑转向的速度public float speedDampTime = 0.1f; // 速度缓冲时间void FixedUpdate (){float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); MovementManagement(h, v);}void MovementManagement (float horizontal, float vertical){// 如果横向或纵向按键被按下 也就是说角色处于移动中if(horizontal != 0f || vertical != 0f){// 设置玩家的旋转 并把速度设为5.5 Rotating(horizontal, vertical);//函数参数解释 anim.SetFloat (当前速度, 最大速度, 加速缓冲时间, 增量时间)anim.SetFloat("speed", 5.5f, speedDampTime, Time.deltaTime); }else// 否则 设置角色速度为0anim.SetFloat("speed", 0);}void Rotating (float horizontal, float vertical){// 创建角色目标方向的向量Vector3 targetDirection = new Vector3(horizontal, 0f, vertical);// 创建目标旋转值 //对应参数分别是 1.四元数看向的目标 2.需要沿着旋转的轴Quaternion targetRotation = Quaternion.LookRotation(targetDirection, Vector3.up); // 创建新旋转值 并根据转向速度平滑转至目标旋转值Quaternion newRotation = Quaternion.Lerp(rb.rotation, targetRotation, turnSmoothing * Time.deltaTime);// 更新刚体旋转值为 新旋转值 rb.MoveRotation(newRotation);} }
PS:
处理物理效果的代码需要写在FixedUpdate函数内;
完整行走的三要素分别是动画、旋转、移动, 这个实例把动画和旋转分别写在2个方法里,移动使用模型的步伐自动计算;
转载于:https://www.cnblogs.com/hellozzz/p/4180613.html
unity3d之角色的移动篇 -- 俯视视角下的键盘移动番外篇相关推荐
- unity3d之角色的移动篇 -- 俯视视角下的键盘移动
这个知识点我想分成几个章节来写,分别记录不同情况下不同的移动方式. 首先是在俯视角摄像机下的键盘控制角色移动(如下图), 先写一个最简单的移动脚本吧(这个脚本也可以用于平常的小测试) 在这之前先得为角 ...
- MongoDB 教程番外篇之添加用户及设置用户权限 ( Rockmongo登陆设置 )
继上一篇 MongoDB 教程番外篇之管理工具: Rockmongo ,MongoDB 缺省是没有设置鉴权的,业界大部分使用 MongoDB 的项目也没有设置访问权限.这就意味着只要知道 MongoD ...
- clang static analyzer源码分析(番外篇):RegionStore以及evalCall()中的conservativeEvalCall
引子 我们在上一篇文章<clang static analyzer源码分析(番外篇):evalCall()中的inline机制>中提及了clang如何创建CallGraph,如何进行函数i ...
- 20.番外篇——Vue如何自定义组件并且进行全局配置
20.番外篇--如何自定义组件并且进行全局配置 前言 1.创建自定义组件 2.导出自定义组件 3.main.js中引入自定义的公共组件并挂在到Vue 4.使用自定义的公共组件 前言 通过之前的系列文章 ...
- 有画快说番外篇-张聪-专题视频课程
有画快说番外篇-2845人已学习 课程介绍 美术绘画的基础教程,用视频的形式呈现出来!让美术绘画更加清晰自然! 课程收益 让更多的人了解美术绘画的详细过程 讲师介绍 张 ...
- 【Unity】Avatar与AvatarMask系统介绍(TPS.番外篇)
[Unity]Avatar与AvatarMask系统介绍(TPS.番外篇) 一些动画知识 动画文件格式 Avatar系统-Unity统一骨骼的解决方案 AvatarMask-部分动画的应用 这次也是拖 ...
- 程序猿成长之路番外篇之前后端加解密(rsa+aes混合加解密算法)
今年国庆前夕接手一个外部项目,说是要保障接口数据安全,数据安全相对容易些,接口安全嘛emmmmm, 这个要考虑加解密算法.白名单之类的问题了.于是打算今天搞一期接口安全为题的成长之路番外篇. 为什么要 ...
- 揭开 Growth Hacking 的神秘面纱(番外篇)+ 大结局
揭开 Growth Hacking 的神秘面纱(番外篇)+ 大结局 覃超帝国兴亡史 12月11日 11:45 FACEBOOK 互联网 分类 :互联网 阅读:1527 抢沙发 Growth Ha ...
- [zt]数学之美番外篇:平凡而又神奇的贝叶斯方法
数学之美番外篇:平凡而又神奇的贝叶斯方法 Tags: 数学, 机器学习与人工智能, 计算机科学 save it69 saved tags: 贝叶斯 math bayesian algorithm 数学 ...
- 『中级篇』docker之wordpress容器SSL(番外篇)(78)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之wordpress容器SSL(番外篇)(78) 搞了2天终于搞定了,现在分享给大家. apache2 ...
最新文章
- 40个Java多线程问题总结
- Qt Designer 编辑Tab顺序
- html显示后台传来的byte类型的数据_java的数据类型
- r语言逻辑向量相加_R语言基础教程——第3章:数据结构——向量
- LSTM之父重提30年前的「快速权重存储系统」:线性Transformer只是它的一种变体...
- C++判断一个数是否为armstrong number阿姆斯特朗数(附完整源码)
- Linux内核代码,第一次看到这样使用的宏
- MySQL循环语句之while循环测试
- tems软件语音测试模板,测试软件使用-TEMS.ppt
- java高级工程师认证考试_java高级工程师开放面试题集
- 脾气好的领导不是好领导
- ESP32开发 3.bat批处理文件,批量删除编译后的build文件夹,方便Git上传分享
- ObjC学习7-C语言特性
- Leetcode796.Rotate String旋转字符串
- Python学习之路(2)
- openwrt 3G上网功能配置(联通版本)
- Outliers: The Story of Success
- 如何进行隐私协议测试
- 中国传统民间游戏汇总
- LCD液晶屏接口和显示器接口介绍
热门文章
- 有道词典“网络已断开”的解决办法
- 魔咒词典 HDU - 1880 (字符串hash 单hash转int或者 双hash )
- Android中的传感器之---陀螺仪传感器
- php程序 导出表格文件后缀,PHPExcel生成Excel文件---提示导出文件或者文件扩展名不一致,或导出的文件或文件扩展名无效...
- 如何经营好自己的朋友圈
- 汉字风格迁移篇--基于生成对抗网络的无监督字体风格转换模型
- php 生成多个水印,php 生成水印的完整代码
- 两部苹果手机同步照片_Windows同步查看iPhone手机的照片
- ArchLinux安装配置及美化
- 递归实现费氏数列:0,1,1,2,3,5,8,13,21,34,55,89,... ...