人物跟随鼠标移动

//人物跟随鼠标移动

private var moveSpeed:int=50;//相机移动速度

var player:Transform;//定义一个人物的Transform
var playerPlane:Plane;//定义一个Plane

function Start()
{
	playerPlane=Plane(player.up,player.position);//在人物所在位置,以人物的Vector3.up为法线创建一个平面
}

function Update () 
{
	transform.position+=Vector3.right*Input.GetAxis("Mouse X")*Time.deltaTime*moveSpeed;//当鼠标平移时,相机随之平移(或右移或左移)
	transform.position+=Vector3.forward*Input.GetAxis("Mouse Y")*Time.deltaTime*moveSpeed;//当鼠标纵移时,相机随之纵移(或上移或下移)
	
	var targetposition=player.TransformPoint(Vector3(0,48.8,-30));
	transform.position=targetposition;//相机的目标位置,这两句代码的作用是让人物一直处于相机的视野下
	PlayerMove();

}

//将鼠标在屏幕某一位置的坐标转化为鼠标在世界空间里该位置的坐标
function PlayerMove()
{
	var cursorScreenPosition:Vector3=Input.mousePosition;//鼠标在屏幕上的位置
	var ray:Ray=Camera.main.ScreenPointToRay(cursorScreenPosition);//在鼠标所在的屏幕位置发出一条射线(暂名该射线为x射线)
	var dist:float;//定义一个float变量(该变量会在下面的代码里用到)
	playerPlane.Raycast(ray,dist);//人物所在平面与x射线相交(这句代码的作用是得到x射线与人物所在平面相交时,x射线射出多远---即得到dist的值)
	var targetposition:Vector3=ray.GetPoint(dist);//在x射线这条射线上,距离起点dist处的点(该点即为鼠标在世界空间里的坐标)
	
	player.position=Vector3.MoveTowards(player.position,targetposition,Time.deltaTime*2);//人物坐标移动到鼠标所在世界空间的坐标
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值