2014-09-23 169 views
0

我一直在阅读其他线索,但解释已经超过了我的脑海。我希望能够点击我的游戏平台并拖动它们,但仅限于X轴。我已经阅读了一些关于雷射的内容,但我甚至不知道如何开始。这个代码几乎没有代码,所以请帮助我,尽量保持解释简单,如果可以的话。如何仅在Unity3D上使用鼠标在X轴上移动对象?

pragma strict 

function Start() { 

} 

function Update() { 

transform.position = Vector3.x(); 

} 

回答

0

您可以使用类似什么是对这个答案http://answers.unity3d.com/questions/567432/click-and-drag-script.html

void OnMouseDown() { 
    _lockedYPosition = screenPoint.y; 
    offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z)); 
    Screen.showCursor = false; 
} 

void OnMouseDrag() 
{ 
    Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z); 
    Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset; 
    curPosition.x = _lockedYPosition; 
    transform.position = curPosition; 
} 

void OnMouseUp() 
{ 
    Screen.showCursor = true; 
} 

这里重要的是要了解使用的鼠标功能写入。当在某个对撞机上检测到某些鼠标输入时,会调用这些函数。所以你需要一个附加在game脚本上的碰撞器,这个脚本就是这样的。例如,当按下按钮时,OnMouseDown被调用,只有一次,OnMouseDrag被调用每一帧,该按钮仍然被按下,并且OnMouseUp仅在用户释放按钮时调用一次。

看看文档,这些方法有很好的描述和解释!

+0

测试的代码,我得到分号的错误,我通过将半冒号2个载体3的,但以后解决这些问题:我得到一个错误的所有的“空洞”的。它说'空'不是一个有效的宏。我试图修复错误,但新的不断新芽... – ShowmenTv 2014-09-24 04:14:15

+0

另外,我用我的游戏锁定相机,你的代码会影响我的相机,并不能删除相机代码? – ShowmenTv 2014-09-24 04:15:24

+0

这不是完整的代码。这只是您如何使用这些方法获取鼠标事件的示例。你正在使用UnityScript。这些例子是C#。完整的代码在链接上的答案。如果您对Unity不熟悉,请尝试使用这些方法来了解它们的工作方式。如果您只是复制并粘贴代码,您将始终遇到错误。附加一个脚本到一个gameObject,附加一个碰撞器,并在脚本写入函数OnMouseDown(){Debug.Log(transform.position)}中,你应该看到在控制台上打印的对象的位置 – limoragni 2014-09-24 16:05:51