public void move(MOVEDIRECTION direction) { moving = true; RaycastHit2D hit; LayerMask wallLayer = LayerMask.GetMask("Wall"); switch (direction) { case MOVEDIRECTION.top: hit = Physics2D.Raycast(transform.position, Vector2.up, Mathf.Infinity, wallLayer); if (hit.collider != null) { Debug.Log(hit.collider.gameObject.transform.position); float distance = hit.collider.gameObject.transform.position.y - transform.position.y; float jumpDisctance = (distance / 0.5f); naechstePos = new Vector3(transform.position.x, transform.position.y + (int)jumpDisctance * 0.5f, 0); } break; case MOVEDIRECTION.down: hit = Physics2D.Raycast(transform.position, -Vector2.up, Mathf.Infinity, wallLayer); if (hit.collider != null) { Debug.Log(hit.collider.gameObject.transform.position); float distance = hit.collider.gameObject.transform.position.y - transform.position.y; float jumpDisctance = (distance / 0.5f); naechstePos = new Vector3(transform.position.x, transform.position.y + (int)jumpDisctance * 0.5f, 0); } break; case MOVEDIRECTION.left: hit = Physics2D.Raycast(transform.position, -Vector2.right, Mathf.Infinity, wallLayer); if (hit.collider != null) { Debug.Log(hit.collider.gameObject.transform.position); float distance = hit.collider.gameObject.transform.position.x - transform.position.x; float jumpDisctance = (distance / 0.5f); naechstePos = new Vector3(transform.position.x + (int)jumpDisctance * 0.5f, transform.position.y, 0); } break; case MOVEDIRECTION.right: hit = Physics2D.Raycast(transform.position, Vector2.right, Mathf.Infinity, wallLayer); if (hit.collider != null) { Debug.Log(hit.collider.gameObject.transform.position); float distance = hit.collider.gameObject.transform.position.x - transform.position.x; float jumpDisctance = (distance / 0.5f); naechstePos = new Vector3(transform.position.x + (int)jumpDisctance * 0.5f, transform.position.y, 0); } break; } }
//玩家移动 public void PlayerMove (MOVEDIRECTION dir) { if (MoveStaminaCheck ()) { switch (dir) { case MOVEDIRECTION.LEFT: transform.Translate (Vector2.left * moveDistance); break; case MOVEDIRECTION.RIGHT: transform.Translate (Vector2.right * moveDistance); break; case MOVEDIRECTION.UP: transform.Translate (Vector2.up * moveDistance); break; case MOVEDIRECTION.DOWN: transform.Translate (Vector2.down * moveDistance); break; } stepCounter++; //通知UI更新 uiInput.SendMessage ("UpdateUIInfo"); //队长移动一次,减少一个体能;成员移动三次,减少一个体能 gData.characterList [0].Stamina = Mathf.Max (0, gData.characterList [0].Stamina - 1); if (stepCounter == 3) { for (int i=1; i<gData.characterList.Count; i++) { gData.characterList [i].Stamina = Mathf.Max (0, gData.characterList [i].Stamina - 1); } stepCounter = 0; } } else { Debug.Log (StringCollection.LEADERNOSTAMINA); } }