利用OnAnimatorove函数控制人物的移动
来源:互联网 发布:影像测量软件 编辑:程序博客网 时间:2024/04/30 01:33
unity中控制人物移动有很多方法,经过这么长时间的学习后,我总结了一些;
利用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); } }
本文出自 “51CTO_King” 博客,请务必保留此出处http://cjboking.blog.51cto.com/11020113/1784536
0 0
- 利用OnAnimatorove函数控制人物的移动
- CharacterController控制人物的移动
- Unity3D 人物移动控制
- Unity3D 利用character controller控制人物在场景中移动和利用Navmesh Agent设置人物自动寻路
- unity键盘控制人物移动
- Unity3d 键盘控制人物移动
- 手机游戏3D人物的移动控制
- unity 手游 3D人物的移动控制
- 人物动画的控制
- FLASH人物移动方向键控制源码.
- Unity 通过点击屏幕控制人物移动。
- unity3d之鼠标控制人物移动
- Unity 通过点击屏幕控制人物移动
- Unity鼠标点击地面控制人物移动
- Unity实现点击地面控制人物移动
- Unity3d制作虚拟按钮控制人物移动
- Unity3D下 仙剑奇侠传三 人物移动及视角控制的尝试实现及补充
- Unity3D控制人物移动跳跃,处理CharacterController的isGrounded总是返回false问题
- uinty中对Xml文件的操作
- unity中简单的血条制作
- webstorm跑索引卡顿的问题
- unity中射线碰撞检测总结
- unity中自定义鼠标样式
- 利用OnAnimatorove函数控制人物的移动
- 广度优先搜索
- unity摄像机控制篇
- Android开发一些共通方法的整理
- C++中Map的基本用法
- 阿里巴巴2017实习生笔试题(二)
- poj 1265(网格)
- Android应用开发试题(收集)
- [2016/8/2][暑假集训]数论基础