Rap*_*tor 4 c# mono unity-game-engine
在Unity中,我可以使用默认Input.GetButtonDown("Jump")获取密钥Space.如何将屏幕触摸映射到iOS中的"跳转"操作?
在本文档中,它解释了仅在JavaScript中获取触摸.虽然在这个视频教程中,它只提到了Button.有没有办法直接将屏幕触摸/手势映射到预定义的动作(如跳转)?
注意:我使用mono C#脚本.
将Touch evens统一起来的方法不止一种:
if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
//Your stuff here
}
Run Code Online (Sandbox Code Playgroud)
以上演示了使用Input.GetTouch
但是,有一个替代方案,我倾向于选择:
if(Input.GetMouseButtonDown(0))
{
//Your stuff here
}
Run Code Online (Sandbox Code Playgroud)
要么
if(Input.GetMouseButtonUp(0))
{
//Your stuff here
}
Run Code Online (Sandbox Code Playgroud)
以上分别使用Input.GetMouseButtonDown和Input.GetMouseButtonUp,它们不仅触发左键单击,还触发iOS和Android触摸事件.正如名称所示,GetMouseButtonDown当您第一次触摸屏幕时GetMouseButtonUp触发,并在您的手指释放时触发.你显然想要在那里添加一些额外的支票,例如为了确保用户没有试图拖动某些东西,或者他是否在屏幕上按下他的手指等.
但请记住,无论您点击何处,上述内容都会触发,只要包含它们的脚本处于活动状态即可.因此,如果您的游戏也有按钮(我猜它会),您可以检查点击/触摸是否在某个区域,或者您可以在相机前面和按钮后面添加透明平面,然后检查这样的点击:
if(Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit) && hit.collider.gameObject.name == "myObjectName")
{
//Your stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
只有当你用你选择的名字(也有一个对撞机)左键点击游戏对象时,上面只会触发,并且它与摄像机之间没有任何其他内容.透明平面将捕获您的所有点击,允许您在其上方粘贴其他元素.
如果我没有解释得足够好,或者你有任何其他问题,那么我就会知道,我会尽力详细说明.
| 归档时间: |
|
| 查看次数: |
12299 次 |
| 最近记录: |