예제 #1
0
    public HeartProjectile DropHeart(int value)
    {
        Vector3         startPos   = transform.position + transform.up * 0.5f;
        HeartProjectile projectile = FireProjectile(null, mHeartProjectilePrefab, startPos, Vector3.zero, 0, Quaternion.identity) as HeartProjectile;

        projectile.mHeartValue           = value;
        projectile.transform.localScale *= 1.0f + Mathf.Clamp01(value / 100.0f);
        return(projectile);
    }
예제 #2
0
    public void LoseHearts(int numHearts)
    {
        Vector3 startPos = transform.position + transform.up * 0.5f;

        while (numHearts > 0)
        {
            int   value = 1;
            float scale = 1.0f;
            if (numHearts > 375)
            {
                value = 100;
                scale = 2.0f;
            }
            else if (numHearts > 125)
            {
                value = 50;
                scale = 1.75f;
            }
            else if (numHearts > 100)
            {
                value = 25;
                scale = 1.5f;
            }
            else if (numHearts > 10)
            {
                value = 10;
                scale = 1.25f;
            }

            Vector3 dir = Random.onUnitSphere;
            dir.y = 0;
            dir.Normalize();
            Vector3 spawnPos = startPos + dir;// * 0.5f;
            if (GameManager.Instance.mDungeon.GetCell(mRigidbody.position).mTileType == DungeonCell.TileType.Wall)
            {
                continue;
            }

            HeartProjectile projectile = FireProjectile(null, mHeartProjectilePrefab, spawnPos, dir, Random.Range(3.0f, 10.0f), Quaternion.identity) as HeartProjectile;
            projectile.mHeartValue           = value;
            projectile.transform.localScale *= scale;

            numHearts -= value;
        }
    }
예제 #3
0
    public override void Fire(BaseWeaponItem weaponData)
    {
        bool huge = (Random.value <= m_ChanceHuge);

        m_WeaponData = weaponData;
        float           angle1     = Vector2.SignedAngle(Vector2.up, m_manager.GetAimDir());
        HeartProjectile projectile = Instantiate(m_Projectile, m_manager.transform.position, Quaternion.Euler(0, 0, angle1));

        if (huge)
        {
            projectile.transform.localScale = projectile.transform.localScale * 3;
            projectile.Setup(m_Damage, m_manager.GetAimDir().normalized, m_ProjectileSpeed, m_manager, KnockbackPower, weaponData, m_Scale, m_ExplodeRadius, true);
        }
        else
        {
            projectile.Setup(m_Damage, m_manager.GetAimDir().normalized, m_ProjectileSpeed, m_manager, KnockbackPower, weaponData, 1, m_ExplodeRadius, false);
        }
    }
예제 #4
0
    public override void OnDeath()
    {
        base.OnDeath();
        SoundManager.Instance.PlaySfx(SoundManager.Instance.sfx_monster_pop, .35f);
        int heartValue = Random.Range(mMinHeartsValue, mMaxHeartsValue + 1);

        if (heartValue > 0)
        {
            HeartProjectile heart = DropHeart(heartValue);
            if (mIsBoss)
            {
                heart.transform.localScale *= 2;
            }
        }


        if (mIsBoss)
        {
            Signal.Dispatch(SignalType.BossDefeated);
        }
    }
예제 #5
0
    protected void OnCollisionEnter(Collision c)
    {
        BasePlayer player = c.collider.GetComponentInParent <BasePlayer>();

        if (player != null)
        {
            player.mDialogText.Show("Hi Johan");
            mDialogText.Show("Cool");
            if (!mHeartGiven)
            {
                Vector3 dir = transform.position - player.transform.position;
                dir.Normalize();
                Vector3         startPos      = transform.position + transform.up * 0.5f + dir;
                GameObject      projectileObj = GameManager.Instance.SpawnPrefab(mHeartProjectilePrefab, startPos, Quaternion.identity);
                HeartProjectile projectile    = projectileObj.GetComponent <HeartProjectile>();
                projectile.Throw(null, startPos, dir, 5);
                projectile.mHeartValue = 1;

                mHeartGiven = true;
            }
        }
    }