Unity3D 中如何同时获得鼠标点击和键盘按键

Unity3D 中如何同时获得鼠标点击和键盘按键,第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;

}

}

}

InputmousePosition是个Vector3,表示当前鼠标在屏幕上的位置。

用CameramainScreenPointToWorld方法(名字可能不对,不过差不多)能把屏幕上的位置转换为世界坐标。详情看Unity的API。

unity新版输入系统获取鼠标滑动不揍如下:Unity鼠标键盘输入:代码写在Update()函数中,屏幕坐标的原点在屏幕的左下角。

1、通过Input(API)获得鼠标的 *** 作信息:获得鼠标的坐标位置:InputmousePosition,检测鼠标按:InputGetMouseButtonDown(0)返回值为布尔值,鼠标左键按下为true,检测鼠标抬起:InputGetMouseButtonUp(0)返回值为布尔值,鼠标抬起为true,检测鼠标长按:InputGetMouseButton(0)返回值为布尔值,鼠标长按为true,检测鼠标中键滚动:InputmouseScrollDelta返回值为-1,0,1(Vector的值),-1表示往下滚,0表示没有滚,1表示往上滚。

2、通过Input(API)获得键盘的 *** 作信息:检测键盘按下某键InputGetKeyDown(),如下例检验键盘按下的是否是W键:补充:KeyCode枚举类中提供了键盘上所有键的枚举值,检测键盘抬起某键nputGetKeyUp(),如下例检验键盘抬起的是否是W键:检测键盘长按某键InputGetKeyUp(),如下例检验键盘长按的是否是W键:。

public GraphicRaycaster m_CanvasUI; public EventSystem eventSystem; private void Update()

{ if (InputGetMouseButtonDown(0)) {

CheckSecondUI(InputmousePosition);

}

} /// <summary>

/// 检测是否有第二层UI

/// </summary>

/// <returns></returns>

public void CheckSecondUI(Vector2 pos)

{

List<GameObject> objList = new List<GameObject>();

PointerEventData eventData = new PointerEventData(eventSystem);

eventDatapressPosition = pos;

eventDataposition = pos;

List<RaycastResult> list = new List<RaycastResult>();

CanvasUIRaycast(eventData, list); if (listCount > 0)

{ for (int i = 0; i < listCount; i++)

{

DebugLog(list[i]gameObjectname);

}

} else {

DebugLog("没有UI");

}

}12345678910111213141516171819202122232425262728293031323334

当鼠标在屏幕上点击时,会打印出鼠标下所有的UI物体的名称

screen Space(屏幕坐标,鼠标坐标):

以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screenwidth,Scr Z的位置是以相机的世界单位来衡量的。

注:鼠标位置坐标属于屏幕坐标,InputmousePosition可以获得该位置坐标幕也为屏幕坐标,InputGetTouch(0)position可以获得单个手指触摸屏幕坐标。

ViewPort Space(视口坐标):

视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点以相机的世界单位来衡量的。

绘制GUI界面的坐标系:

这个坐标系与屏幕坐标系相似,不同的是该坐标系以屏幕的左上角为(0,0)点,右下角为(Screenheight)。

在Unity中获取鼠标在Canvas的坐标非常简单,只需要使用InputmousePosition函数即可获取鼠标在Canvas上的坐标。该函数返回一个Vector3,其中包含X,Y和Z三个坐标,其中X和Y分别表示鼠标在Canvas上的X和Y坐标。另外,你还可以使用CameramainScreenToWorldPoint函数来将屏幕坐标转换为世界坐标,以便在游戏中使用鼠标坐标。

用 For 检查一次 Array

例如

C#:

//阵列

public GameObject[] players;

//检查的 GameObject

public GameObject player;

function Start(){

for(i = 0; i < playerslength; i++){

if(players[i] = player){

DebugLog("序列号是"+i);

}

}

}

以上就是关于Unity3D 中如何同时获得鼠标点击和键盘按键全部的内容,包括:Unity3D 中如何同时获得鼠标点击和键盘按键、unity 怎么获取当前点击的空间idex、unity新版输入系统获取鼠标滑动等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存