unity怎么获取键盘鼠标事件

unity怎么获取键盘鼠标事件,第1张

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中判断鼠标是否在屏幕指定区域内等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9716025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存