private void handleTouch(TouchPhase action, Vector3 position, int fingerId) { object obj = _touchs[fingerId]; string touchArea = ""; if (obj == null) { Ray ray = cameraGUI.ScreenPointToRay(position); RaycastHit hit = new RaycastHit(); if (Physics.Raycast(ray, out hit, 100)) { touchArea = hit.transform.gameObject.name; _touchs[fingerId] = touchArea; } } else { touchArea = obj.ToString(); } //Debug.Log("ta=" + touchArea + " ac=" + action + " pos=" + position + " id=" + fingerId); switch (touchArea) { case "button_shoot": if (action == TouchPhase.Began || action == TouchPhase.Moved || action == TouchPhase.Stationary) { player.shoot(cameraMain.ScreenToWorldPoint(position)); } else if (action == TouchPhase.Ended || action == TouchPhase.Canceled) { player.stopAttack(); } break; case "ta_flare": if (action == TouchPhase.Ended) { player.shootFlare(); } break; case "button_shield": buttonShield.handleTouchEvent(action); if (action == TouchPhase.Began || action == TouchPhase.Moved || action == TouchPhase.Stationary) { player.shield(); } else if (action == TouchPhase.Ended || action == TouchPhase.Canceled) { player.unshield(); } break; case "button_joystick": if (action == TouchPhase.Began || action == TouchPhase.Moved || action == TouchPhase.Stationary) { if (position.x < _joystickScreenPointX) { player.moveLeft(); } else { player.moveRight(); } } else { Debug.Log("move end"); player.stand(); } break; case "button_weapon_1": case "button_weapon_2": case "button_weapon_3": case "button_weapon_4": case "button_weapon_5": if (action == TouchPhase.Began) { WeaponButton wb = GameObject.Find(touchArea).GetComponent <WeaponButton>(); setPlayerSelectedWeapon(wb); } break; case "button_start": if (buttonStart.handleTouchEvent(action)) { setGameState(GameState.RUNNING); } break; case "button_home": if (buttonHome.handleTouchEvent(action)) { setGameState(GameState.HOME); } break; case "ranking": case "button_g+": if (buttonGooglePlus.handleTouchEvent(action)) { //Social.ShowAchievementsUI(); ((PlayGamesPlatform)Social.Active).ShowLeaderboardUI(LEADERBOARD_HIGH_SCORE_ID); } break; case "button_restart": if (buttonRestart.handleTouchEvent(action)) { setGameState(GameState.RUNNING); } break; case "button_resume": if (buttonResume.handleTouchEvent(action)) { setGameState(GameState.RUNNING); } break; case "button_home2": if (buttonHome2.handleTouchEvent(action)) { setGameState(GameState.HOME); } break; case "rank": if (action == TouchPhase.Ended) { Social.ShowAchievementsUI(); } break; } }