unity中控制人物移动有很多方法,经过这么长时间的学习后,我总结了一些;

  1. 利用transform的translate方法控制人物移动;(结合动画的控制就不说了)

 float mx = Input.GetAxis("Horizontal") * moveSpeed * Time.deltaTime;float mz = Input.GetAxis("Vertical") * moveSpeed * Time.deltaTime;transform.translate(mx,0,mz);

2.利用Rigidbody组件rigidbody.MovePosition()方法进行移动(包含动画控制部分),鼠标控制人物移动;

void  FixedUpdate()
{float h=Input.GetAxis("Horizontal");float v=Input.GetAxis("Vertical");Move(h,v);Turning();Animating(h,v);
}
void Move(float h,float v)
{Vector3 movement;movement.Set(h,0,v);movement=movement.normalized*speed*Time.deltaTime;rigidbody.MovePosition(transform.position+movement);
}
void Turning()
{Ray camRay=Camera.main.ScreenPointToRay(Input.mousePosition);RayCastHit hitInfo;if(Physics.RayCast(camRay,out hitInfo,distance,floorMask)){Vector3 playerToMouse=hitInfo.point-transform.position;playerToMouse.y=0;Quaternion newRotation=Quaternion.LookRotation(playerToMouse);rigidbody.MovePosition(newRotation);}
}
void Animating(float h,float v)
{bool walking=h!=0||v!=0;m_ator.SetBool("Walk",walking);
}

3.还有一种就是利用Rigidbody的velocity属性来控制人物移动了

 float moveSpeed =10;Animator m_ator;Rigidbody rigid;Vector3 m_Pos;void Start () {m_ator = transform.GetComponent<Animator>();rigid = transform.GetComponent<Rigidbody>();m_Pos = transform.position;}void Update () {float mx = Input.GetAxis("Horizontal") ;float mz = Input.GetAxis("Vertical") ;Vector3 nowVelocity = rigid.velocity;if (Mathf.Abs(mx) > 0.01f || Mathf.Abs(mz) > 0.01f){m_Pos = transform.position;transform.LookAt(m_Pos+new Vector3(mx, 0, mz));rigid.velocity = new Vector3(mx * moveSpeed, nowVelocity.y * moveSpeed, mz * moveSpeed);m_ator.SetBool("Walk",true);}else {rigid.velocity = new Vector3(0,nowVelocity.y*moveSpeed,0);m_ator.SetBool("Walk",false);}}

转载于:https://blog.51cto.com/cjboking/1784536

利用OnAnimatorove函数控制人物的移动相关推荐

  1. es6 中的generator函数控制流程

    Generator函数跟普通函数的写法有非常大的区别: 一是,function关键字与函数名之间有一个星号: 二是,函数体内部使用yield语句,定义不同的内部状态(yield在英语里的意思就是&qu ...

  2. ctfshow-萌新-web5( 利用位运算符控制SQL获取网站敏感信息)

    ctf.show 萌新模块 we5关,这一关考察的是intval()函数转换字符串的特性和SQL注入的绕过思路,这一关过滤了单双引号,or,斜杠,加减乘除号,叹号,括号,select等关键字,推荐使用 ...

  3. 嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)

    嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析) 首先声明该博客是针对朱有鹏老师的嵌入式课程进行笔记的总结. 一.通过GPIO控制点亮LED( ...

  4. unity 官方案例之刚体控制人物移动

    人物的转动控制放在Update()函数里面.人物的移动跳跃操作则放在FixedUpdate()函数 旋转 人物的旋转可以通过 鼠标或者键盘进行操作,鼠标是轴Mouse X,键盘是轴Horizontal ...

  5. C++关于利用_kbhit()函数持续获取键盘输入的一点心得。

    #C++关于利用_kbhit()函数持续获取键盘输入的一点心得. 小白路过想写个贪吃蛇玩玩,当用链表把贪吃蛇结构连起来后自然就想到了移动控制的问题.写来写去代码总是出错,贪吃蛇只有一直按着方向键才能移 ...

  6. 【Mo 人工智能技术博客】利用Logistic函数和LSTM分析疫情数据

    利用Logistic函数和LSTM分析疫情数据 作者:林泽龙 Mo 1. 背景 2019 新型冠状病毒 (SARS-CoV-2),曾用名 2019-nCoV,通用简称新冠病毒,是一种具有包膜的正链单股 ...

  7. Linux系统中利用C语言控制LED的方法

    大家好, 今天主要和大家聊一聊,如何利用C语言控制LED灯的实验. 目录 ​第一:C语言板控制LED灯简介 第二:实验程序实现 ​第三:C语言实验控制程序 ​第一:C语言板控制LED灯简介 实际工作中 ...

  8. 关于以Arduino为主板,利用红外遥控器控制42步进电机同步带滑台移动

    Arduino控制步进电机 Arduino控制滑台 Arduino红外遥控 红外遥控步进电机 红外遥控滑台 本案例使用物品 Arduino Mega 1838红外一体接受器 红外遥控器 200mm同步 ...

  9. 在Blender中使用代码控制人物模型的眼部动作 - 睁眼与闭眼

    在Blender中使用代码控制人物模型的眼部动作 - 睁眼与闭眼 flyfish 眼睛eyeBlink_R闭眼的数值分别是0.0.5.1.而眼睛的纵横比与之相反,眼睛的纵横比越大,眼睛睁的越大. 眼睛 ...

最新文章

  1. 英特尔Nehalem微架构三级缓存原理学习
  2. python列表可以加可以乘
  3. Java常见的几种内存溢出及解决方法
  4. java 三级考试_java三级考试理论题
  5. Linux下访问光盘数据
  6. 总结深度学习各种网络结构【更新中...】
  7. 怎么查看mysql帮助文档_高效查看MySQL帮助文档的方法
  8. 93、App Links (应用程序链接)实例
  9. ASP.NET Core性能改进【转载】
  10. 四川省大学生计算机作品大赛,我院承办2019“新华三杯”四川省大学生计算机作品大赛并获佳绩...
  11. 在线医疗和教育,正在争抢未来!
  12. 分享一些学习资料-大量PDF电子书
  13. MyEclipse10破解详解过程
  14. xmanager5连接CENTOS6
  15. 第十四课 k8s源码学习和二次开发原理篇-调度器原理
  16. 计算机科学与技术理工英语4,2021年7月国开(中央电大)本科《理工英语4》期末考试试题及答案...
  17. 简单表单提交php教程,php教程之表单提交实例
  18. BZOJ 2277 Poi2011 Strongbox
  19. krap病毒家族解密方式及ao变种分析
  20. 数据仓库、大数据平台、数据中台的区别

热门文章

  1. Something needs to be forgotten.
  2. 计算机网络的运用在什么时候,离散时间排队系统及其在计算机网络中的应用
  3. pcre安装_Nginx学习_第一期_安装及安装问题解决
  4. 电梯为什么显示停止服务器,教你奥的斯服务器怎么看故障
  5. feignclient多个配置_@FeignClient同一个name使用多个配置类的解决方案
  6. .exp文件_exp及expdp的主要区别及常用的导入导出操作
  7. oracle备份保留3天,【错误更正】oracle 备份: 每天备份,全备份,保留七天。...
  8. 在 Ubuntu Linux 上从源代码构建 Qt 6.2.2的简短教程
  9. 人工智能改善客户服务体验
  10. 保护云端数据的5个技巧