Exemple #1
0
    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);
            }
        }
    }
Exemple #2
0
    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();
                }
            }
        }
    }