Exemple #1
0
        public static GameObject InstantiateProjectile(ProjectileParameters parameters, Quaternion rotation)
        {
            var projParent = new GameObject("PProjFirePoint");

            projParent.transform.localPosition = parameters.Position;
            projParent.transform.rotation      = parameters.Rotatoin;

            var projGO = new GameObject("PlayerProj", typeof(SpriteRenderer), typeof(BoxCollider2D), typeof(Rigidbody2D));

            var renderer = projGO.GetComponent <SpriteRenderer>();

            renderer.sprite         = parameters.Texture;
            renderer.sortingLayerID = SortingLayer;

            var collider = projGO.GetComponent <BoxCollider2D>();

            collider.size      = new Vector2(0.5f, 0.5f);
            collider.isTrigger = true;

            var rb = projGO.GetComponent <Rigidbody2D>();

            rb.isKinematic  = true;
            rb.rotation     = 0;
            rb.gravityScale = 0;

            var projectile = projGO.AddComponent <Projectile>();
            var paraClone  = parameters.Clone();

            projectile.Parameters          = paraClone;
            projGO.tag                     = "Projectile";
            projGO.transform.rotation      = rotation;
            projGO.transform.localPosition = projParent.transform.position;
            projGO.transform.SetParent(projParent.transform);
            Destroy(projParent, 3f);
            return(projParent);
        }
Exemple #2
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();
            }
        }