Unity实现点击地面控制人物移动
来源:互联网 发布:java swing编程 编辑:程序博客网 时间:2024/04/30 08:34
首先声明,博主使用的是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.point);//使物体朝向目标点 } } 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);//移动 }}
0 0
- Unity实现点击地面控制人物移动
- Unity鼠标点击地面控制人物移动
- Unity中鼠标点击地面控制人物移动
- Unity中鼠标点击地面控制人物移动
- KING_UNITY学习之鼠标点击地面控制人物移动
- Unity3D游戏场景之鼠标点击地面控制人物移动
- Unity 通过点击屏幕控制人物移动。
- Unity 通过点击屏幕控制人物移动
- 实现鼠标点击地面实现人物在地面移动(c#)
- unity学习笔记【点击地面人物走动】
- unity键盘控制人物移动
- 【Unity 3D学习】鼠标点击控制人物移动到目标位置
- [unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- [unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- 鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- [unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- 鼠标点击地面人物自动走动(也包含按键wasd&space控制) .
- unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- CF
- The connection to adb is down, and a severe error has occured.解决方法
- 农民种地(图的搜索)
- MIT 线性代数(10—12)读书笔记
- Mask RCNN
- Unity实现点击地面控制人物移动
- 深入浅出解释FFT(六)——深入理解fft变换
- 人最害怕的其实就是没完没了,并且看不到任何的希望和收获。
- Linux环境下------UDP 通信
- MyBatis学习笔记(二)
- Ubuntu16.04 使用PPA安装JDK8
- 【Unity开发】Unity引擎生成2K视频的方法
- NoSQL分类及常用软件
- N皇后递归