var moveSpeed:int=5;//player移动速度
var player:Transform;//定义一个人物的Transform
private var endposition : Vector3;
function Start()
{
endposition = playertransformposition;
}
function Update ()
{
if(InputGetButtonUp("LeftMouse")){ //LeftMouse是在inputManager中设置的,左键值为mouse 0
PlayerMove();
}
var targetposition=playerTransformPoint(Vector3(0,488,-30));
transformposition=targetposition;//相机的目标位置,这两句代码的作用是让人物一直处于相机的视野下
if(endposition != playertransformposition){
playerposition=Vector3MoveTowards(playerposition,endposition,TimedeltaTimemoveSpeed);
}
}
function PlayerMove()
{
var cursorScreenPosition:Vector3=InputmousePosition;//鼠标在屏幕上的位置
var ray:Ray=CameramainScreenPointToRay(cursorScreenPosition);//在鼠标所在的屏幕位置发出一条射线(暂名该射线为x射线)
var hit:RaycastHit;
if(PhysicsRaycast(ray,hit)){
if(hitcollidergameObjecttag=="Terrain"){//设置地形Tag为Terrain
endposition = hitpoint;
}
}
}
screen Space(屏幕坐标,鼠标坐标):
以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screenwidth,Scr Z的位置是以相机的世界单位来衡量的。
注:鼠标位置坐标属于屏幕坐标,InputmousePosition可以获得该位置坐标幕也为屏幕坐标,InputGetTouch(0)position可以获得单个手指触摸屏幕坐标。
ViewPort Space(视口坐标):
视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点以相机的世界单位来衡量的。
绘制GUI界面的坐标系:
这个坐标系与屏幕坐标系相似,不同的是该坐标系以屏幕的左上角为(0,0)点,右下角为(Screenheight)。
下面是unity自带的,在Scripts资源包里有拖拽代码,这个拖拽物体必须附加Rigidbody刚体组件。
DragRigidbodyjs
var spring = 500;
var damper = 50;
var drag = 100;
var angularDrag = 50;
var distance = 02;
var attachToCenterOfMass = false;
private var springJoint : SpringJoint;
function Update ()
{
// Make sure the user pressed the mouse down
if (!InputGetMouseButtonDown (0))
return;
var mainCamera = FindCamera();
// We need to actually hit an object
var hit : RaycastHit;
if (!PhysicsRaycast(mainCameraScreenPointToRay(InputmousePosition), hit, 100))
return;
// We need to hit a rigidbody that is not kinematic
if (!hitrigidbody || hitrigidbodyisKinematic)
return;
if (!springJoint)
{
var go = new GameObject("Rigidbody dragger");
var body : Rigidbody = goAddComponent ("Rigidbody") as Rigidbody;
springJoint = goAddComponent ("SpringJoint");
bodyisKinematic = true;
}
springJointtransformposition = hitpoint;
if (attachToCenterOfMass)
{
var anchor = transformTransformDirection(hitrigidbodycenterOfMass) + hitrigidbodytransformposition;
anchor = springJointtransformInverseTransformPoint(anchor);
springJointanchor = anchor;
}
else
{
springJointanchor = Vector3zero;
}
springJointspring = spring;
springJointdamper = damper;
springJointmaxDistance = distance;
springJointconnectedBody = hitrigidbody;
StartCoroutine ("DragObject", hitdistance);
}
function DragObject (distance : float)
{
var oldDrag = springJointconnectedBodydrag;
var oldAngularDrag = springJointconnectedBodyangularDrag;
springJointconnectedBodydrag = drag;
springJointconnectedBodyangularDrag = angularDrag;
var mainCamera = FindCamera();
while (InputGetMouseButton (0))
{
var ray = mainCameraScreenPointToRay (InputmousePosition);
springJointtransformposition = rayGetPoint(distance);
yield;
}
if (springJointconnectedBody)
{
springJointconnectedBodydrag = oldDrag;
springJointconnectedBodyangularDrag = oldAngularDrag;
springJointconnectedBody = null;
}
}
function FindCamera ()
{
if (camera)
return camera;
else
return Cameramain;
}
编程回忆录已经有八年的历史,是教程团队旗下的一个在线网络培训机构,目前已录制十三个科目,涉及到互联网开发,软件开发,游戏开发(虚拟现实开发),现在编程回忆录的Unity3D是国内唯一一家中文连载的大型视频教程。零基础开始讲解,通俗易懂 ,以实战为目地,受到众多网友的一致好评。
1打开Unity3d工程,新建脚本。
2添加脚本代码,如图所示:
3添加物体和三个文本,将脚本赋予物体,将文本拖拽到脚本中的GUIText变量中。
4按下播放按钮,选中物体并拖拽,观察坐标变化。
以上就是关于unity怎么获取键盘鼠标事件全部的内容,包括:unity怎么获取键盘鼠标事件、unity 怎样正确获取2d世界坐标、unity3d中判断鼠标是否在屏幕指定区域内等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)