OnMouseDrag和bool控制器

时间:2016-04-27 17:50:40

标签: c# unity3d

我创建了9个克隆对象,并使用 OnMouseDrag 函数移动我的对象。

首先,我在区域区域拖动对象,然后单击左键将其放置在地图中。

 void OnMouseDrag(){

        if(placed==false && placedArmyCounter<3){
        Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        mousePos.z = 0f;


            mousePos.x=Mathf.Round(mousePos.x);
            mousePos.y=Mathf.Round(mousePos.y);

            if( BoardManager.boardID==0 && mousePos.x>=0 && mousePos.x<=5 && mousePos.y>=0 && mousePos.y<=2){
            transform.position=new Vector2((mousePos.x),(mousePos.y));


            }
            if( BoardManager.boardID==1 && mousePos.x>=0 && mousePos.x<=7 && mousePos.y>=0 && mousePos.y<=3){
                transform.position=new Vector2((mousePos.x),(mousePos.y));


            }

        }

    }

左键单击

if(Input.GetMouseButtonDown(1) )     
        {
            RaycastHit2D hit = Physics2D.Raycast (Camera.main.ScreenToWorldPoint((Input.mousePosition)), -Vector2.up);
            if(hit.collider != null)
            {


                GameObject target = hit.collider.gameObject;


                if(target.tag=="infantry"){
                    target.GetComponent<playerArmyMove>().Place();

                }

                if(target.tag=="archer"){
                    target.GetComponent<playerArmyMove>().Place();

                }

                if(target.tag=="horseman"){
                    target.GetComponent<playerArmyMove>().Place();

                }

            }


        }

放置功能

public void Place(){

        if(checkPlace==true){
            placed=false;
        }

        if(checkPlace==false){
            placed=true;
            placedArmyCounter+=1;

        }
    }

当放置为真时,对象无法再次移动并且放置了用于开始游戏的ArmmyController

顺便说一下,我只想在地图区域放置3个物体。

但如果我没有点击左键,则会出现问题,我可以在地图中添加很多对象。我不希望这样发生。

我知道我需要另一个控制器来检查&#34;地图区域中是否有任何对象并且是否放置&#34;但是如果我在 OnMouseDrag 函数中添加控制器,任何对象都可以不动。

有什么建议吗?

P.S:不要关心checkPlace布尔函数,它是关于检测碰撞。

0 个答案:

没有答案