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); }
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; } }
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); } }
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); } }
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; } } }