예제 #1
0
 public void UpdateSprite(PlayerSpriteState spriteState)
 {
     // Debug.Log("Setting sprite state: " + spriteState);
     if (spriteState == state)
     {
         return;
     }
     animationCount = 0;
     state          = spriteState;
     Animate();
 }
예제 #2
0
    public override void Begin()
    {
        base.Begin();

        Player player = this.gameObject.GetComponent <Player>();
        int    dir    = (int)player.GetDirection();

        Vector2[] walkingSprite1Collider = { new Vector2(-0.5f,  0.5f),
                                             new Vector2(-0.5f, -0.5f),
                                             new Vector2(0.5f,  -0.5f),
                                             new Vector2(0.5f, 0.5f) };

        PlayerSpriteState idleSprite            = new PlayerSpriteState(this.listenerId, "DefaultTempPlayer");
        PlayerSpriteState walkingSpriteForward  = new PlayerSpriteState(this.listenerId, "DefaultTempPlayer");
        PlayerSpriteState walkingSpriteBackward = new PlayerSpriteState(this.listenerId, "DefaultTempPlayer");
        PlayerSpriteState chargeSprite;
        PlayerSpriteState dashSprite;
        PlayerSpriteState quickStepSpriteForward;
        PlayerSpriteState quickStepSpriteBackward;
        PlayerSpriteState quickStepSpritePause = new PlayerSpriteState(this.listenerId, "DefaultTempPlayer");

        if (dir > 0)
        {
            chargeSprite            = new PlayerSpriteState(this.listenerId, "Player/LookingRight/Attacking/Attacking1", walkingSprite1Collider, dir);
            dashSprite              = new PlayerSpriteState(this.listenerId, "Player/LookingRight/Attacking/Attacking2", walkingSprite1Collider, dir);
            quickStepSpriteForward  = new PlayerSpriteState(this.listenerId, "Player/LookingRight/QuickStep/QuickStep1", walkingSprite1Collider, dir);
            quickStepSpriteBackward = new PlayerSpriteState(this.listenerId, "Player/LookingLeft/QuickStep/QuickStep1", walkingSprite1Collider, dir);
        }
        else
        {
            chargeSprite            = new PlayerSpriteState(this.listenerId, "Player/LookingLeft/Attacking/Attacking1", walkingSprite1Collider, dir);
            dashSprite              = new PlayerSpriteState(this.listenerId, "Player/LookingLeft/Attacking/Attacking2", walkingSprite1Collider, dir);
            quickStepSpriteForward  = new PlayerSpriteState(this.listenerId, "Player/LookingLeft/QuickStep/QuickStep1", walkingSprite1Collider, dir);
            quickStepSpriteBackward = new PlayerSpriteState(this.listenerId, "Player/LookingRight/QuickStep/QuickStep1", walkingSprite1Collider, dir);
        }

        /*
         * The below is stuff from when I was working on basic animation
         * if (dir > 0) {
         *  idleSprite = new PlayerSpriteState(this.listenerId, "Player/LookingRight/Idle/idle1", 0.15, walkingSprite1ColliderRight, dir);
         *  idleSprite.AddSequencedSprite("Player/LookingRight/Idle/idle2", 0.15);
         *  idleSprite.AddSequencedSprite("Player/LookingRight/Idle/idle3", 0.15);
         *  idleSprite.AddSequencedSprite("Player/LookingRight/Idle/idle4", 0.15);
         *  idleSprite.AddSequencedSprite("Player/LookingRight/Idle/idle5", 0.15);
         *  idleSprite.AddSequencedSprite("Player/LookingRight/Idle/idle6", 0.15);
         *  walkingSprite = new PlayerSpriteState(this.listenerId, "Player/LookingRight/Walking/walking1", 0.15, walkingSprite1ColliderRight, dir);
         *  walkingSprite.AddSequencedSprite("Player/LookingRight/Walking/walking3", 0.15);
         * } else {
         *  idleSprite = new PlayerSpriteState(this.listenerId, "Player/LookingLeft/Idle/idle1", 0.15, walkingSprite1ColliderLeft, dir);
         *  idleSprite.AddSequencedSprite("Player/LookingLeft/Idle/idle2", 0.15);
         *  idleSprite.AddSequencedSprite("Player/LookingLeft/Idle/idle3", 0.15);
         *  idleSprite.AddSequencedSprite("Player/LookingLeft/Idle/idle4", 0.15);
         *  idleSprite.AddSequencedSprite("Player/LookingLeft/Idle/idle5", 0.15);
         *  idleSprite.AddSequencedSprite("Player/LookingLeft/Idle/idle6", 0.15);
         *  walkingSprite = new PlayerSpriteState(this.listenerId, "Player/LookingLeft/Walking/walking1", 0.15, walkingSprite1ColliderLeft, dir);
         *  walkingSprite.AddSequencedSprite("Player/LookingLeft/Walking/walking3", 0.15);
         * }*/
        PlayerSpriteState dashChargingSprite  = new PlayerSpriteState(this.listenerId, "PlayerDashCharging");
        PlayerSpriteState feintSprite         = new PlayerSpriteState(this.listenerId, "PlayerDashCharging");
        PlayerSpriteState winCollisionSprite  = new PlayerSpriteState(this.listenerId, "DefaultTempPlayerWinCollision");
        PlayerSpriteState loseCollisionSprite = new PlayerSpriteState(this.listenerId, "DefaultTempPlayerLoseCollision");

        idleSprite.AddStateChange("charge", chargeSprite);
        idleSprite.AddStateChange("dashCharge", dashChargingSprite);
        idleSprite.AddStateChange("feint", feintSprite);
        idleSprite.AddStateChange("moveForward", walkingSpriteForward);
        idleSprite.AddStateChange("moveBackward", walkingSpriteBackward);
        walkingSpriteForward.AddStateChange("stop", idleSprite);
        walkingSpriteForward.AddStateChange("quickStep", quickStepSpriteForward);
        walkingSpriteForward.AddStateChange("moveBackward", idleSprite);
        walkingSpriteForward.AddStateChange("charge", chargeSprite);
        walkingSpriteForward.AddStateChange("dashCharge", dashChargingSprite);
        walkingSpriteForward.AddStateChange("feint", feintSprite);
        walkingSpriteForward.AddStateChange("collisionWin", winCollisionSprite);
        walkingSpriteForward.AddStateChange("collisionLoss", loseCollisionSprite);
        walkingSpriteBackward.AddStateChange("stop", idleSprite);
        walkingSpriteBackward.AddStateChange("quickStep", quickStepSpriteBackward);
        walkingSpriteBackward.AddStateChange("moveForward", idleSprite);
        walkingSpriteBackward.AddStateChange("charge", chargeSprite);
        walkingSpriteBackward.AddStateChange("dashCharge", dashChargingSprite);
        walkingSpriteBackward.AddStateChange("feint", feintSprite);
        walkingSpriteBackward.AddStateChange("collisionWin", winCollisionSprite);
        walkingSpriteBackward.AddStateChange("collisionLoss", loseCollisionSprite);


        quickStepSpriteForward.AddStateChange("stop", quickStepSpritePause);
        quickStepSpriteForward.AddStateChange("charge", chargeSprite);
        quickStepSpriteForward.AddStateChange("dashCharge", dashChargingSprite);
        quickStepSpriteForward.AddStateChange("feint", feintSprite);
        quickStepSpriteForward.AddStateChange("collisionWin", winCollisionSprite);
        quickStepSpriteForward.AddStateChange("collisionLoss", loseCollisionSprite);


        quickStepSpriteBackward.AddStateChange("stop", quickStepSpritePause);
        quickStepSpriteBackward.AddStateChange("charge", chargeSprite);
        quickStepSpriteBackward.AddStateChange("dashCharge", dashChargingSprite);
        quickStepSpriteBackward.AddStateChange("feint", feintSprite);
        quickStepSpriteBackward.AddStateChange("collisionWin", winCollisionSprite);
        quickStepSpriteBackward.AddStateChange("collisionLoss", loseCollisionSprite);

        quickStepSpritePause.AddStateChange("stop", idleSprite);
        quickStepSpritePause.AddStateChange("charge", chargeSprite);
        quickStepSpritePause.AddStateChange("dashCharge", dashChargingSprite);
        quickStepSpritePause.AddStateChange("feint", feintSprite);
        quickStepSpritePause.AddStateChange("collisionWin", winCollisionSprite);
        quickStepSpritePause.AddStateChange("collisionLoss", loseCollisionSprite);

        idleSprite.AddStateChange("collisionWin", winCollisionSprite);
        idleSprite.AddStateChange("collisionLoss", loseCollisionSprite);
        chargeSprite.AddStateChange("stop", loseCollisionSprite);
        chargeSprite.AddStateChange("collisionWin", winCollisionSprite);
        chargeSprite.AddStateChange("collisionLoss", loseCollisionSprite);
        dashChargingSprite.AddStateChange("dash", dashSprite);
        dashChargingSprite.AddStateChange("collisionWin", winCollisionSprite);
        dashChargingSprite.AddStateChange("collisionLoss", loseCollisionSprite);
        dashSprite.AddStateChange("stop", loseCollisionSprite);
        dashSprite.AddStateChange("collisionWin", winCollisionSprite);
        dashSprite.AddStateChange("collisionLoss", loseCollisionSprite);
        feintSprite.AddStateChange("stop", idleSprite);
        feintSprite.AddStateChange("charge", chargeSprite);
        feintSprite.AddStateChange("dashCharge", dashChargingSprite);
        feintSprite.AddStateChange("collisionWin", winCollisionSprite);
        feintSprite.AddStateChange("collisionLoss", loseCollisionSprite);
        winCollisionSprite.AddStateChange("recover", idleSprite);
        winCollisionSprite.AddStateChange("collisionLoss", loseCollisionSprite);
        loseCollisionSprite.AddStateChange("recover", idleSprite);
        loseCollisionSprite.AddStateChange("collisionWin", winCollisionSprite);

        this.AddCurrentState(idleSprite);
    }
예제 #3
0
        private void Update()
        {
            var horizontal    = Input.GetAxisRaw("Horizontal");
            var horizontalAbs = Mathf.Abs(horizontal);
            var vertical      = Input.GetAxisRaw("Vertical");
            var verticalAbs   = Mathf.Abs(vertical);

            if (abilityCharge < 10)
            {
                abilityCharge           += Time.deltaTime;
                AbilityRechargeBar.value = abilityCharge;
            }

            if (HasWon && !winTrigger)
            {
                winTrigger  = true;
                rb.velocity = Vector2.zero;
                animator.UpdateSprite(PlayerSpriteState.Win);
                OnWin();
            }
            if (HP <= 0 && !deathTrigger && !HasWon)
            {
                deathTrigger = true;
                IsDead       = true;
                rb.velocity  = Vector2.zero;
                animator.UpdateSprite(PlayerSpriteState.Death);
                OnDeath();
            }
            else if (!deathTrigger && !IsDead && !HasWon)
            {
                if (Input.GetKeyDown(KeyCode.E) && OnTrapDoor && !gamePaused)
                {
                    TrapDoorText.gameObject.SetActive(false);
                    LastTrapDoor.Lock();
                    loadWOrld(CurrentLevel + 1);
                    WorldController.StartWave();
                }

                if (Input.GetKeyDown(KeyCode.C) && !gamePaused)
                {
                    if (customizationOpen)
                    {
                        customizationOpen = false;
                        CustomizationWindow.SetActive(customizationOpen);
                    }
                    else
                    {
                        customizationOpen = true;
                        CustomizationWindow.SetActive(customizationOpen);
                    }
                }

                if (Input.GetKeyDown(KeyCode.Q) && Bombs > 0)
                {
                    var bombGO = Instantiate(BombPrefab);
                    bombGO.transform.position = transform.localPosition;
                    IncreaseStat(PlayerStats.BOMB, -1);
                }

                if (Input.GetKeyDown(KeyCode.Space) && abilityCharge >= 10f)
                {
                    Teleporting              = true;
                    abilityCharge            = 0;
                    AbilityRechargeBar.value = abilityCharge;
                    var teleAimGO = Instantiate(TeleAimPrefab);
                    teleAimGO.transform.position = UnityEngine.Camera.main.ScreenToWorldPoint(Input.mousePosition);
                    teleAimGO.GetComponent <Teleport>().player = this;
                }

                if (Input.GetKeyDown(KeyCode.P))
                {
                    PauseGame();
                }

                if (Input.GetAxisRaw("Fire1") > 0.1f && !gamePaused && !Teleporting)
                {
                    Vector2    dir            = UnityEngine.Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
                    float      angle          = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
                    Quaternion rotation       = Quaternion.AngleAxis(angle, Vector3.forward);
                    Quaternion spriteRotation = Quaternion.AngleAxis(angle - 45, Vector3.forward);

                    ProjectileParameters = new ProjectileParameters()
                    {
                        Texture     = ProjTexture,
                        Speed       = 15f,
                        Damage      = DMG,
                        OrbitSpeed  = 25f,
                        OrbitLength = 0.5f,
                        OrbitOffset = 0
                    };

                    var proj = ProjectileParameters.Clone();
                    proj.Position = transform.position;
                    proj.Rotatoin = rotation;

                    if (Time.time - lastShoot > DPS)
                    {
                        Projectile.InstantiateProjectile(proj, spriteRotation);
                        lastShoot = Time.time;
                    }
                }

                if (horizontalAbs < 0.1f && verticalAbs < 0.1f && !gamePaused)
                {
                    rb.velocity = Vector2.zero;
                    animator.UpdateSprite(LastDir);
                }

                if (horizontalAbs > verticalAbs && !gamePaused)
                {
                    animator.UpdateSprite(horizontal > 0 ? PlayerSpriteState.Right : PlayerSpriteState.Left);
                    LastDir = horizontal > 0 ? PlayerSpriteState.Right : PlayerSpriteState.Left;
                }

                rb.velocity = new Vector2(horizontal * Speed * Time.fixedDeltaTime, vertical * Speed * Time.fixedDeltaTime);
            }

            if (Input.GetKeyDown(KeyCode.Escape))
            {
                Application.Quit();
            }
        }