非俯视视角时的点击判断

今天想做一个unity3d的rpg游戏demo,实现点击地图即移动到该点的功能,但是我游戏的摄像机视角一直在变,那如果判断是否点击在可以走的地方呢。网上找了一个demo脚本,原理是当我们点击屏幕时,我们按照一定的方法,将屏幕上的二维坐标转化为三维坐标,然后从主摄像机向点击位置发送一条射线,该射线与地面相交,然后判断该射线是否可以碰到目标区域,即移动。C#脚本代码如下:

using UnityEngine;
using System.Collections;

public class PeopleControl : MonoBehaviour {
	 
	//目标点坐标
	private Vector3 mTargetPos;
	
	void Start () 
	{
	 
	}
	
	void Update () 
	{
	  //按下鼠标右键时
	  if(Input.GetMouseButton(1))
	{
		 //获取屏幕坐标
		 Vector3 mScreenPos=Input.mousePosition;
		 //定义射线
		 Ray mRay=Camera.main.ScreenPointToRay(mScreenPos);
		 RaycastHit mHit;
		 //判断射线是否击中地面
		 if(Physics.Raycast(mRay,out mHit))
		 {
			if(mHit.collider.gameObject.tag=="Terrain")
			{
			   //获取目标坐标
			   mTargetPos=mHit.point;
			   //让主角面朝目标坐标并向目标移动
			   transform.LookAt(mTargetPos);
			   //播放奔跑动画
			   transform.gameObject.GetComponent<Animation>().Play("run");
			 transform.Translate(Vector3.forward * 0.5F);
			}
		 }
	  }
	  //松开鼠标右键时
	  if(Input.GetMouseButtonUp(1))
	  {
	    transform.gameObject.GetComponent<Animation>().Play("idle");
	  }
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值