Unity学习2 鼠标点击控制物体移动
2017-09-05 00:08
781 查看
http://blog.csdn.net/rose_girls/article/details/48951231
//关于Ray / RayCastHit / RayCast的解析
以下为鼠标点击控制物体移动的代码
using UnityEngine;
using System.Collections;
public class Pathfinding1 : MonoBehaviour {
public GameObject play;//定义物体
public Vector3 temPos;//定义矢量
public bool isMoving;//判断是否正在移动
public Quaternion rotation;//控制物体旋转
// Use this for initialization
void Start () {
play=GameObject.Find("Cube");//寻找物体
print (play);
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (1))//判断是否按下鼠标右键
{
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机发射出一条射线
RaycastHit hit;//用于储存射线的位置信息
if(Physics.Raycast(ray,out hit,100))
{
print(hit.collider.name);
if(hit.collider.gameObject.name=="Plane")
{
Debug.Log(hit.point);//调试输出point的点
temPos=new Vector3(hit.point.x,play.transform.position.y,hit.point.z);//定义矢量方向
if(Vector3.Distance(play.transform.position,temPos)>0.1)//如果物体不在点上面,则进行移动
{
isMoving=true;
}
}
}
}
if (isMoving)
{
turn(temPos);//调用turn方法 旋转物体方向
this.GetComponent<CharacterController>().SimpleMove((temPos-play.transform.position).normalized*5f);
}
}
void turn(Vector3 look)
{
rotation = Quaternion.LookRotation (temPos - play.transform.position, Vector3.up);
play.transform.rotation = Quaternion.Slerp (play.transform.rotation, rotation, Time.deltaTime * 6f);
}
}
//基本的原理为
1.从摄像机中发射出一条射线,射到地面
2.找到射线与地面相交的点(point)
3.旋转物体,利用角色控制器(CharacterContreller)移动至那个点
2017-9-5
//关于Ray / RayCastHit / RayCast的解析
以下为鼠标点击控制物体移动的代码
using UnityEngine;
using System.Collections;
public class Pathfinding1 : MonoBehaviour {
public GameObject play;//定义物体
public Vector3 temPos;//定义矢量
public bool isMoving;//判断是否正在移动
public Quaternion rotation;//控制物体旋转
// Use this for initialization
void Start () {
play=GameObject.Find("Cube");//寻找物体
print (play);
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (1))//判断是否按下鼠标右键
{
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机发射出一条射线
RaycastHit hit;//用于储存射线的位置信息
if(Physics.Raycast(ray,out hit,100))
{
print(hit.collider.name);
if(hit.collider.gameObject.name=="Plane")
{
Debug.Log(hit.point);//调试输出point的点
temPos=new Vector3(hit.point.x,play.transform.position.y,hit.point.z);//定义矢量方向
if(Vector3.Distance(play.transform.position,temPos)>0.1)//如果物体不在点上面,则进行移动
{
isMoving=true;
}
}
}
}
if (isMoving)
{
turn(temPos);//调用turn方法 旋转物体方向
this.GetComponent<CharacterController>().SimpleMove((temPos-play.transform.position).normalized*5f);
}
}
void turn(Vector3 look)
{
rotation = Quaternion.LookRotation (temPos - play.transform.position, Vector3.up);
play.transform.rotation = Quaternion.Slerp (play.transform.rotation, rotation, Time.deltaTime * 6f);
}
}
//基本的原理为
1.从摄像机中发射出一条射线,射到地面
2.找到射线与地面相交的点(point)
3.旋转物体,利用角色控制器(CharacterContreller)移动至那个点
2017-9-5
相关文章推荐
- Unity鼠标控制物体360°旋转和点击移动
- KING_UNITY学习之鼠标点击地面控制人物移动
- 【Unity 3D学习】鼠标点击控制人物移动到目标位置
- unity让物体移动到鼠标点击点
- Unity 物体跟随鼠标点击移动,判断物体是否在移动
- unity 鼠标拖动 物体旋转 点击变色 拖动移动
- Unity学习笔记——鼠标移动到物品上显示物品名字,点击后显示物品信息
- Unity简单利用屏幕坐标转换实现鼠标控制物体移动
- Unity18--鼠标和场景相反运动、物体绕过障碍物,向目标自动移动,且鼠标点击哪里,物体也运动
- unity 点击鼠标左键控制物体360展示
- Unity中鼠标点击地面控制人物移动
- Unity用鼠标控制物体移动
- 【Unity 3D学习】获取鼠标滑动方向(上下左右)-控制摄像机围绕物体旋转
- Unity中鼠标点击地面控制人物移动
- Unity学习1 控制物体移动
- unity 点击按钮控制物体移动
- Unity中物体如何移动到鼠标点击位置
- Unity控制鼠标移动及点击
- Unity移动物体到鼠标点击位置
- 我的Unity(1)一点一滴 鼠标点击任意位置,物体移动到该位置。