首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >鼠标拖动克隆无限克隆

鼠标拖动克隆无限克隆
EN

Stack Overflow用户
提问于 2017-05-08 17:03:08
回答 1查看 75关注 0票数 0

所以我做了一个马里奥制造者“克隆”,我想要它实例化对象,当我掌握控制和拖动。它制造了几乎无限的瓷砖。我希望它只在新位置与对象的旧位置相同的情况下才能生成一个对象。所有的东西都会被一个1×1块的网格所包围。

代码语言:javascript
复制
public GameObject tilePrefab;

      void OnMouseDrag(){
        Vector2 pos = Input.mousePosition;
        pos = Camera.main.ScreenToWorldPoint (pos);
        pos.x = Mathf.Round(pos.x);
        pos.y = Mathf.Round(pos.y);
        transform.position = pos;
        if (Input.GetKey (KeyCode.LeftControl)) {
            if (transform.position != GameObject.Find ("SomePrefabName").transform.position) {
                GameObject myGameObject = Instantiate (tilePrefab) as GameObject;
                myGameObject.name = "SomePrefabName";
            }
        }
    }

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-08 22:59:02

试着改变如下:

代码语言:javascript
复制
public GameObject tilePrefab;
      void OnMouseDrag(){
        Vector2 pos = Input.mousePosition;
        pos = Camera.main.ScreenToWorldPoint (pos);
        pos.x = Mathf.Round(pos.x);
        pos.y = Mathf.Round(pos.y);
        transform.position = pos;
        var hitColliders = Physics.OverlapSphere(transform.position, 1);
        if (Input.GetKey (KeyCode.LeftControl)) {
            if (hitColliders.Length == 0) {
                GameObject myGameObject = Instantiate (tilePrefab) as GameObject;
                myGameObject.name = "SomePrefabName";
            }
        }
    }

在这里,我们使用Physics.OverlapSphere来检测是否有对撞机在想要的位置,如果不是在本例中,我们继续进行代码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43853358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档