如何在统一中再次交换对象?

时间:2014-05-22 07:57:54

标签: unity3d

我已经创建了一个游戏,其中对象用空的游戏对象交换它的位置。当我第一次点击它交换的对象时出现问题。但是当我再次点击同一个对象时它不会交换它的位置。我做错了什么.. ??请帮忙

board.cs

void Start () {

       for(int a=GridHeight;a>0;a--){
         for(int b=0;b<GridWidth;b++)
       {

          GameObject g =  Instantiate(gemprefab, new Vector3 ( b,a, 0), Quaternion.identity) as GameObject;
          //g.AddComponent("GUIText");
          //g.guiText.text = y.ToString();
          g.transform.parent = gameObject.transform;


          gemComponent = g.GetComponent<Gem>();
          gems.Add(gemComponent);

          if(a==1 && b==3)
          { 
              gemComponent.cube.renderer.enabled = false;
          }

       }
       gameObject.transform.position = new Vector3 (-2.5f, -2.5f, 0);



    }
public void SwapGem(Gem gem1)
    {

       gem1start = gem1.transform.position;
       gem1end = gemComponent.transform.position;
       if (gemComponent.IsNeighbourWith(gem1))
       {
                 gem2start = gem1end;
                 gem2end = gem1start;
                 gem1.transform.position = gem2start;
                 gemComponent.transform.position = gem2end;

          }

       for (int i = 0; i < gems.Count; i++) {

         if(gems[i].transform.position != gems[randomIndex].transform.position)
         {
          print ("not");
         }else{
          //Application.LoadLevel("level02");
          print ("yes");
         }

          }
    }

Feeler.cs

void OnTriggerEnter(Collider c)
    {
       //owner.RemoveNeighbor(c.GetComponent<Gem>());
                 if (c.tag == "Gem") {

                    owner.AddNeighbor(c.GetComponent<Gem> ());

          }

    }
    void OnTriggerExit(Collider c)
    {
       if(c.tag =="Gem")
       {
         owner.RemoveNeighbor(c.GetComponent<Gem>());


       }
}

Gems.cs

public void AddNeighbor(Gem g)
    {    
          if (!Neighbors.Contains (g)) {
                 Neighbors.Add (g);
       } 
       }

    public void OnMouseDown()
    {

          if (!GameObject.Find ("board").GetComponent<board> ().isSwapping) {
                 GameObject.Find ("board").GetComponent<board> ().SwapGem (this);

          }

    }

       public void RemoveNeighbor(Gem g)
       {

       Neighbors.Remove(g);

       }

0 个答案:

没有答案