Unity实现点击地面控制人物移动
2017-04-02 12:41
931 查看
首先声明,博主使用的是Unity5.3.2(64)
最近几篇关于Unity的博客是博主学习了一个RPG游戏后把一部分功能摘出来做的一个总结,这篇是关于人物移动的。
废话不多说:
using UnityEngine; using System.Collections; public class PlayerDirection : MonoBehaviour { public Vector3 targetPosition = Vector3.zero;//用来保存目标位置 private bool isMoving = false;//用来判断是否鼠标移动 private PlayerMove move;//用来执行移动的脚本 // Use this for initialization void Start () { targetPosition = transform.position;//初始化目标位置 move = GetComponent<PlayerMove> ();//获取人物的移动脚本 } // Update is called once per frame void Update () { if (Input.GetMouseButtonDown (0)) { Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);//从相机向鼠标点击点发射条射线 RaycastHit hit;//记录碰撞信息 bool isCollider = Physics.Raycast (ray,out hit);//判断是否发生碰撞 if (isCollider && hit.collider.tag == Tags.ground) {//f发生碰撞,并且是地面 isMoving = true; LookAtTarget (hit.po 4000 int);//使物体朝向目标点 } } if (Input.GetMouseButtonUp (0)) { isMoving = false; } if (isMoving) { //得到要移动的目标位置 //让主角朝向目标位置 Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); RaycastHit hit; bool isCollider = Physics.Raycast (ray, out hit); if (isCollider && hit.collider.tag == Tags.ground) { LookAtTarget (hit.point); } } else { if (move.isMove) { LookAtTarget (targetPosition); } } } void LookAtTarget(Vector3 hitPoint){ targetPosition = hitPoint; targetPosition = new Vector3(targetPosition.x,transform.position.y,targetPosition.z); this.transform.LookAt (targetPosition); } }
using UnityEngine; using System.Collections; public class PlayerMove : MonoBehaviour { public float speed = 4;//移动速度 public bool isMove = false;//判读是否在移动中 private PlayerDirection dir;//用来实现点击地面的脚本 private CharacterController controller;//角色控制器 // Use this for initialization void Start () { dir = GetComponent<PlayerDirection> (); controller = GetComponent<CharacterController> (); } // Update is called once per frame void Update () { //获得与目标点的距离 float distance = Vector3.Distance (dir.targetPosition, transform.position); //距目标点的距离大于0.2才移动 if (distance > 0.2f) { isMove = true; controller.SimpleMove (transform.forward * speed); } else { isMove = false; } } } public void SimpleMove(Vector3 targetPos){ transform.LookAt (targetPos);//朝向目标点 controller.SimpleMove (transform.forward * speed);//移动 } }
相关文章推荐
- Unity中鼠标点击地面控制人物移动
- Unity中鼠标点击地面控制人物移动
- KING_UNITY学习之鼠标点击地面控制人物移动
- unity3d实现一个人物跟随鼠标点击地面那点就移动那点,实现点击特效加人物动画方向的切换。
- Unity 通过点击屏幕控制人物移动
- Unity2D - 2. 实现基本的人物移动控制和碰撞检测
- 【Unity 3D学习】鼠标点击控制人物移动到目标位置
- Unity3D游戏场景之鼠标点击地面控制人物移动
- Unity 通过点击屏幕控制人物移动。
- Unity2D - 4. 实现android虚拟摇杆控制人物移动
- [unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- 在Unity3D中实现点击地面物体移动到指定地点
- [unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- Unity 3d 如何实现点击屏幕,npc自动移动到点击位置
- Unity 移动端实现pad 端acceleration 控制移动、旋转
- unity 手游 3D人物的移动控制
- 鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- unity 通过点击游戏小地图,来移动主相机功能实现
- Unity 点击Terrian实现物体移动
- Unity3D游戏开发之史上最简单的鼠标点击控制人物走动实现