2015-07-03 92 views
0

我在运行时通过使用拖放操作创建了一个对象,我正在使用Input.getmousebutton移动对象并调整对象的大小。在Unity中使用c#移动运行时创建的对象

当我尝试移动对象时,我按住鼠标按钮并且可以移动它,但是当我释放按钮并将光标移动到空白处然后单击鼠标按钮时,对象将移动到此处。

这是我的主要问题,但我也必须将相机移动到物体的缩放视图。

mycode的是:

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections; 
public class ClickAction : MonoBehaviour { 
    //float distance=10; 
    public GameObject gm; 
    public string obj=null; 
    public Destroyer destroy; 
    //public MoveObject move; 
    private Vector3 screenPoint; 
    private Vector3 offset; 
    void Update() 
    { 
     if(Input.GetMouseButton(0)) 
     { 
      if(gm) 
      { 
       gm.GetComponent<GameObject>(); 
       gm.transform.position=new Vector3(Input.mousePosition.x,Input.mousePosition.y,1); 
      } 
     } 
     if (Input.GetMouseButtonDown (0)) 
     { 
      Ray toMouse = Camera.main.ScreenPointToRay (Input.mousePosition); 
      RaycastHit rhInfo; 
      bool didHit = Physics.Raycast (toMouse, out rhInfo, 500.0f); 
      if (didHit) 
      { 
       gm=rhInfo.collider.gameObject; 
       Debug.Log (rhInfo.collider.name+"--"+gameObject.name); 
       obj=rhInfo.collider.name; 
       //move.OnMouseDown(); 
       //move.OnMouseDrag(); 
       //Calling Destroyer script to destroy object 
       destroy.getName(obj); 
      } 
     } 
     if (Input.GetMouseButton (1)) 
     { 
      if (gm) 
      { 
       gm.GetComponent<GameObject>(); 
       //gm.transform.localScale += new Vector3(0.3F, .3F, .3F); 
       gm.transform.localScale = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 1); 
      } 
     } 
    } 
} 
+0

'gm.GetComponent ()'不会做任何事情,因为您没有将结果分配给任何东西。 – Ben

+0

我认为gm.GetComponent ()无论如何都会返回null,因为组件继承了MonoBehaviour而不是GameObject –

回答

0

问题的第一部分:

在第二次点击的对象移动,因为这两个Input.GetButtonDown(0)Input.GetButton(0)被称为在该按钮被第一按住帧。

http://docs.unity3d.com/ScriptReference/Input.html

两个部分越来越称呼,是因为你有两个if语句时,你大概的意思有:

if(Input.GetMouseButton(0)) { ... } else if(Input.GetMouseButtonDown(0)) { ... }

另外,如果你想测试一个鼠标点击你更好地使用Input.GetMouseButtonUp(0),因为当用户释放鼠标按钮时会发生这种情况,这将帮助您将点击与拖动区分开来。

0

对于你的第一个问题

将光标移动到空的空间,然后单击鼠标按钮,该对象被搬到这里。

我建议你删除你的第一个if条件即

if(Input.GetMouseButton(0)) 
{ 
    if(gm) 
    { 
     gm.GetComponent<GameObject>(); 
     gm.transform.position=new Vector3(Input.mousePosition.x,Input.mousePosition.y,1); 
    } 
} 

这段代码将你的角色移动到你的光标位置时,你永远会点击鼠标左键。

对于你的第二个问题:

我也有移动相机对准对象的缩放视图

我看到你正在改变你的性格的规模,但我会建议你换你的相机的位置。所有你需要做的是找出你想移动你的相机多近,并保存该值(最有可能你只需要移动相机的z轴)。