protected override void OnStart() { base.OnStart(); EntityRender tickingRender = GetTickingRenderer(); if (tickingRender != null) { tickingRender.SetFrameInfo("Main", 0, 0, 32, 32); tickingRender.SetCurrentGroup("Main"); } EntityRender explosionRender = GetExplodeRenderer(); if (explosionRender != null) { for (int i = 0; i < 12; i++) { explosionRender.SetFrameInfo("Explode", i * 96, 0, 96, 96); } for (int i = 0; i < 11; i++) { explosionRender.LinkNextFrame("Explode", i, i + 1); } explosionRender.SetGlobalFrameDelay(0.15f); } StartCoroutine(WaitAndExplode()); }
protected override void OnAwake() { base.OnAwake(); m_er = GetComponent <EntityRender>(); CurrentState = State.E_Idle; m_time = 0; }
protected override void OnAwake() { base.OnAwake(); Inventory = new Inventory(this); Experience = new Experience(); m_entityRender = GetComponent <EntityRender>(); HealthComponent = GetComponent <HealthComponent>(); }
public IEnumerator Explode() { gameObject.transform.localScale *= m_explosionRadius; // Find all entities near the bomb within a certain radius foreach (var entity in this.EntitiesWithinRadius(m_explosionRadius)) { // TODO: Shameless copied from SwordAttack - Need to be merged into generic code Enemy enemy = entity as Enemy; if (enemy && (!m_singleHitPerEnemy || !m_hitEntities.ContainsKey(enemy))) { HealthComponent healthComponent = enemy.HealthComponent; if (healthComponent.CanReceiveDamage()) { // simple damage formula for now int damage = GameManager.Instance.MainPlayer.Experience.Level; // check if critical hit ! if (RandomManager.Probability(0.10f)) { damage *= 3; } healthComponent.ReceiveDamage(damage); m_hitEntities.Add(enemy, true); Vector2 relativeDir = enemy.transform.position - this.transform.position; enemy.KnockBack(relativeDir.normalized, 3f, 0.05f); } } } EntityRender tickingRenderer = GetTickingRenderer(); tickingRenderer.enabled = false; EntityRender explodeRenderer = GetExplodeRenderer(); explodeRenderer.SetCurrentGroup("Explode"); AudioManager.PlaySfx(m_explodeSfx); yield return(new WaitForSeconds(m_explodeSfx.length)); }
private GameObject SpawnGameObjectAt(Vector2 origin, GameObject prefab) { if (prefab == null) { UnityEngine.Debug.Log("Can't SpawnAttack since m_attackPrefab is null"); return(null); } GameObject obj = Instantiate(prefab); if (obj == null) { return(null); } obj.transform.position = origin; EntityRender entityRender = obj.GetComponent <EntityRender>(); entityRender.SetCurrentGroup("Main"); return(obj); }