void Update() { #if UNITY_EDITOR || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX if (axes == RotationAxes.MouseXAndY) { // Read the mouse input axis rotationX += Input.GetAxis("Mouse X") * sensitivityX; rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationX = ClampAngle(rotationX, rotationMinY, rotationMaxY); rotationY = ClampAngle(rotationY, rotationMinX, rotationMaxX); Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up); Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, -Vector3.right); transform.localRotation = originalRotation * xQuaternion * yQuaternion; } else if (axes == RotationAxes.MouseX) { rotationX += Input.GetAxis("Mouse X") * sensitivityX; rotationX = ClampAngle(rotationX, rotationMinY, rotationMaxY); Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up); transform.localRotation = originalRotation * xQuaternion; // When User is told to Tilt Device Left or Right if (TutorialState == _TutorialState.MissionOne) { if (rotationX < -60 && grid.curPos < 5) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } else if (rotationX > 60 && grid.curPos == 5) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } } } else if (axes == RotationAxes.MouseY) { rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = ClampAngle(rotationY, rotationMinX, rotationMaxX); Quaternion yQuaternion = Quaternion.AngleAxis(-rotationY, Vector3.right); transform.localRotation = originalRotation * yQuaternion; } #elif UNITY_IPHONE || UNITY_ANDROID if (axes == RotationAxes.MouseXAndY) { // Store movement into temporary Vector3 to be applied to transform localRotation.y -= Input.acceleration.y * speed; localRotation.x += FixAcceleration(Input.acceleration).x *speed; // Clamp rotation within set field of view localRotation.y = ClampAngle(localRotation.y, rotationMinY, rotationMaxY); localRotation.x = ClampAngle(localRotation.x, rotationMinX, rotationMaxX); // Apply new cached rotation to transform rotation transform.localEulerAngles = localRotation; } else if (axes == RotationAxes.MouseX) { localRotation.y -= Input.acceleration.y * speed; localRotation.y = ClampAngle(localRotation.y, rotationMinY, rotationMaxY); transform.localEulerAngles = localRotation; // When User is told to Tilt Device Left or Right if (TutorialState == _TutorialState.MissionOne) { if (localRotation.y < -60 && grid.curPos < 5) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } else if (localRotation.y > 60 && grid.curPos == 5) { axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } } } else if (axes == RotationAxes.MouseY) { localRotation.x += FixAcceleration(Input.acceleration).x *speed; localRotation.x = ClampAngle(localRotation.x, rotationMinX, rotationMaxX); transform.localEulerAngles = localRotation; } #endif if (Input.GetMouseButtonUp(0)) { // When user is able to Shoot if ((int)TutorialState >= (int)_TutorialState.MissionTwo) { // If user hits ammo sprite, reload instead of shooting Ray ray = UIcam3D.camera.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, 100f, UIMask3D)) { if (onTutorialUpdate != null) { onTutorialUpdate(hit.collider.gameObject, DBAccess.instance.userPrefs.userGun); } if (TutorialState == _TutorialState.MissionTwoSecond) { axes = RotationAxes.None; TutorialState = _TutorialState.InTransition; grid.moveGrid(_TutorialState.None); } } else if (DBAccess.instance.userPrefs.userGun.capacity > 0) { // If not in reload or pause, shoot gun. Gun will take care of bullets remaining logic. DBAccess.instance.userPrefs.userGun.Shoot(transform, rayCastmask, gunModel); onTutorialUpdate(null, DBAccess.instance.userPrefs.userGun); BroadcastMessage("applyRecoil"); audioSources[0].Play(); } else { audioSources[3].Play(); } // When user is told to Shoot Anywhere if (TutorialState == _TutorialState.MissionTwo) { Debug.Log(DBAccess.instance.userPrefs.userGun.capacity); if (shotCount < 4) { shotCount++; } else { TutorialState = _TutorialState.None; axes = RotationAxes.None; grid.moveGrid(_TutorialState.None); } } } // When user needs to click on the Tutorial Window else if (TutorialState != _TutorialState.InTransition) { RaycastHit hit; if (Physics.Raycast(transform.position, UICam.transform.forward, out hit, 100f, tutorialMask)) { if (TutorialState != _TutorialState.MissionOne) { grid.moveGrid(TutorialState); TutorialState = _TutorialState.InTransition; } if (hit.collider.name == "WindowBG(Calibrate)") { CalibrateAccelerometer(); } } } Ray ray2 = UIcam3D.camera.ScreenPointToRay(Input.mousePosition); RaycastHit hit2; if (Physics.Raycast(ray2, out hit2, 100f)) { hit2.collider.SendMessage("onHitByRayCast", hit2.collider.gameObject, SendMessageOptions.DontRequireReceiver); } } }
void hitByRayCast(GameObject hit) { //Debug.Log("hitByRayCast"); if (hit.layer == gameObject.layer) { StartCoroutine(damagedAnim()); if (Application.loadedLevel == 2) { stats.health -= DBAccess.instance.userPrefs.userGun.modifiedPower; } if (stats.health > 0) { if (onEnemyStatsChange != null) { onEnemyStatsChange(stats, EnemyState); } } else { if (Application.platform == RuntimePlatform.IPhonePlayer) { ChartBoostBinding.trackEvent("Player Win"); } EnemyState = _EnemyState.Dead; StopAllCoroutines(); mat.color = Color.white; iTween.Stop(gameObject); iTween.Stop(enemyActual); enemyActual.animation.Stop(); enemyActual.animation.Play("Character_Death"); if (onEnemyStatsChange != null) { onEnemyStatsChange(stats, EnemyState); } GameObject.Find("Crosshair").GetComponent <UISprite>().enabled = false; } // If in Tutorial Level if (Application.loadedLevel == 1) { // Reset state of tutorial to progress forward Tutorial t = GameObject.Find("Player").GetComponent <Tutorial>(); if (hitCount < 4 && (int)t.TutorialState < (int)Tutorial._TutorialState.MissionFour) { hitCount++; } else if (t.TutorialState == Tutorial._TutorialState.MissionFour) { hitCount++; stats.health -= 10; if (stats.health > 0) { if (onEnemyStatsChange != null) { onEnemyStatsChange(stats, EnemyState); } } else { EnemyState = _EnemyState.Dead; StopAllCoroutines(); mat.color = Color.white; iTween.Stop(gameObject); iTween.Stop(enemyActual); enemyActual.animation.Stop(); enemyActual.animation.Play("Character_Death"); TutorialGrid tg = GameObject.FindObjectOfType(typeof(TutorialGrid)) as TutorialGrid; tg.moveGrid(Tutorial._TutorialState.None); if (onEnemyStatsChange != null) { onEnemyStatsChange(stats, EnemyState); } } } else { // Reset hitCount for reuse through tutorial hitCount = 0; t.axes = Tutorial.RotationAxes.None; t.grid.moveGrid(Tutorial._TutorialState.None); // Stop AI pathing GetComponent <AStarEnemy>().StopAllCoroutines(); } } } }