【问题标题】:Unity 3D scripts move multiple objectsUnity 3D 脚本移动多个对象
【发布时间】:2015-06-10 23:01:31
【问题描述】:

我有问题。我在 Unity 3D (c#) 中做一个项目,一个 3D 世界编辑器。我的问题是我想通过选择多个对象来移动它们。我设法用鼠标光标移动了一个,但是对于多个我失败了:D 这是我的移动代码:

public class ClickAndDrag : MonoBehaviour {
    private RaycastHit raycastHit;
    private GameObject Gobj;
    private float distance;
    private Vector3 ObjPosition;
    private bool Bobj;

    // Use this for initialization
    void Start() {
    }

    // Update is called once per frame
    void Update() {
        if (Input.GetMouseButton (0)) {
            var ray = GetComponent<Camera> ().ScreenPointToRay (Input.mousePosition);
            var hit = Physics.Raycast (ray.origin, ray.direction, out raycastHit);

            if (hit && !Bobj) {
                Gobj = raycastHit.collider.gameObject;
                distance = raycastHit.distance;
                Debug.Log (Gobj.name);
            }

            Bobj = true;
            ObjPosition = ray.origin + distance * ray.direction;
            Gobj.transform.position = new Vector3 (ObjPosition.x, ObjPosition.y, ObjPosition.z);
        } else {
            Bobj = false;
            Gobj = null;
        }       
    }
}

感谢您的帮助!

【问题讨论】:

  • 这仅用于移动单个对象。您在移动多个对象时面临哪些问题?您没有在问题中指定这一点。
  • 我不知道该怎么做,因为当我移动一个对象时,我用鼠标来做这个,但我不能为多个对象做这个

标签: c# unity3d


【解决方案1】:

private GameObject Gobj; 是一个单个游戏对象的变量。将其重新格式化为 private List&lt;GameObject&gt; objects; 而不是 Gobj.transform.position = new Vector3 (ObjPosition.x, ObjPosition.y, ObjPosition.z) 这样做:

foreach (GameObject item in objects)
{
    item.transform.position = new Vector3 (ObjPosition.x, ObjPosition.y, ObjPosition.z)
}

编辑:如果您不确定如何操作列表,List&lt;T&gt; 有一组内置函数可以让操作变得非常简单。您现在只需调用objects.Add(newObject); 添加对象,调用objects.Remove(oldObject); 删除对象。

【讨论】:

  • 部分答案:您没有解释如何获取此对象列表。它不会神奇地被填满。
  • 要使用List&lt;T&gt;,您必须在脚本顶部添加using System.Collections.Generic;,不要忘记。
  • 他并没有问如何填写列表或如何选择要移动的内容......他只是询问移动,他似乎对答案很满意。
  • 是的,但是:不要忽视 stackoverflow 的答案,或者不是只对 OP 而是对整个社区有用。
  • 他提到他想通过选择多个对象来移动它们。所以我假设 OP 正在构建一些 RTS,比如你应该能够在运行时选择所有游戏对象。
猜你喜欢
  • 2020-12-14
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多