Exemplo n.º 1
0
    private void ShootFlame(float angle)
    {
        // Shoot a flame at `angle` degrees
        angle += 90 * (faceRight ? -1 : 1);
        FlameProjectile flame = Instantiate(flameProjectilePrefab) as FlameProjectile;

        flame.transform.position = transform.position - new Vector3(0f, 0.5f, 0f);
        if (faceRight)
        {
            flame.transform.position   = flame.transform.position + new Vector3(1f, 0f, 0f);
            flame.transform.localScale = new Vector3(-1f, 1f, 1f);
        }
        else
        {
            flame.transform.position = flame.transform.position - new Vector3(1f, 0f, 0f);
        }
        flame.friendly = friendly;

        Vector2 direction = Quaternion.AngleAxis(angle, Vector3.forward) * Vector2.up;

        flame.rigidbody2D.velocity = direction * 10f;
    }
Exemplo n.º 2
0
    public void StartSwing()
    {
        collider.enabled = true;
        AudioManager.Instance.PlaySoundWithParent("swoosh", ESoundChannel.SFX, gameObject);

        if (Time.time >= nextProjTime)
        {
            FlameProjectile currFlame = Instantiate(FlameProjectilePrefab, ProjectilePosition);

            Player  player  = Player.Instance;
            Camera  camera  = player.camera;
            Vector3 forward = camera.transform.forward;

            Ray        ray = new Ray(camera.transform.position + forward * MinDistance, forward);
            RaycastHit hit;
            Vector3    aimPoint = Vector3.zero;
            if (Physics.Raycast(ray, out hit, MaxDistance, AimLayer))
            {
                aimPoint = hit.point;
            }
            else
            {
                aimPoint = camera.transform.position + forward * MaxDistance;
            }
            currFlame.transform.forward = aimPoint - currFlame.transform.position;

            currFlame.Impulse            = ProjectileImpulse;
            currFlame.LifeTime           = 20f;
            currFlame.Damage             = ProjectileDamage;
            currFlame.Knockback          = this.Knockback;
            currFlame.RigidbodyKnockback = this.RigidbodyKnockback;
            currFlame.Fire();

            nextProjTime = Time.time + ProjectileReloadTime;
        }
    }
Exemplo n.º 3
0
    public void Shoot()
    {
        int     direction      = GetAttackDirection();
        Vector3 createdPositon = GetCreatePosition();
        bool    isCreated      = GetIsCreated();

        // Set direction
        int xDir     = 0;
        int yDir     = 0;
        int rotation = 0;

        switch (direction)
        {
        case 0:
            xDir = -1;
            break;

        case 1:
            xDir     = -1;
            yDir     = 1;
            rotation = -45;
            break;

        case 2:
            yDir     = 1;
            rotation = -90;
            break;

        case 3:
            xDir     = 1;
            yDir     = 1;
            rotation = -135;
            break;

        case 4:
            xDir     = 1;
            rotation = 180;
            break;

        case 5:
            xDir     = 1;
            yDir     = -1;
            rotation = 135;
            break;

        case 6:
            xDir     = 0;
            yDir     = -1;
            rotation = 90;
            break;

        case 7:
            xDir     = -1;
            yDir     = -1;
            rotation = 45;
            break;
        }

        if (!IsHasEnoughEnergy(enerygyPerSpecialAttack))
        {
            return;
        }

        ReduceEnergy(enerygyPerSpecialAttack);
        GameObject      go    = ObjectPooler.Instance.FetchGO("FireProjectile");
        FlameProjectile firep = go.GetComponent <FlameProjectile>();

        firep.transform.position = createdPositon;
        // firep.transform.SetParent(this.specialAttackPosition);
        firep.Restart();
        firep.SetRotation(rotation);
        firep.SetMissileDirection(xDir, yDir);
    }