public void AttackTree() { if (m_Character.m_currentWeapon.m_item != ItemType.AXE) { return; } MusicHandler.PlaySound(SoundType.AXE_SOUND); m_health--; Debug.Log("tree is attacked"); if (m_health < 0) { gameObject.SetActive(false); Debug.Log("Tree is destroyed"); SpriteManage.DESTROY_SPRITE(gameObject); // generate tree log after tree is cut down for (int i = 0; i < NUMBER_OF_TREE_LOG; i++) { GameObject temp = SpriteManage.CREATE_SPRITE(SpriteType.TREE_LOG); Debug.Assert(temp); Vector2 newPos = SpriteManage.randomAroundPoint(transform.position, 16); temp.transform.position = newPos; } } }
protected void checkHealth() { if (m_Health <= 0) { SpriteManage.DESTROY_SPRITE(gameObject); } }
public void AttackRock() { // set the selection square is show // if characters holding axe and clicked on the tree in range, then tree health is -1 if (m_Character.m_currentWeapon.m_item != ItemType.AXE) { return; } const float OFFSET = 16; float distance = Vector2.Distance(Camera.main.WorldToScreenPoint(m_Character.transform.position), Camera.main.WorldToScreenPoint(transform.position)); MusicHandler.PlaySound(SoundType.AXE_SOUND); m_health--; Debug.Log("rock is attacked"); if (m_health < 0) { gameObject.SetActive(false); Debug.Log("rock is destroyed"); SpriteManage.DESTROY_SPRITE(gameObject); // generate tree log after tree is cut down for (int i = 0; i < NUMBER_OF_STONE; i++) { GameObject temp = SpriteManage.CREATE_SPRITE(SpriteType.STONE); Debug.Assert(temp); Vector2 newPos = SpriteManage.randomAroundPoint(transform.position, 16); temp.transform.position = newPos; } } }
Collider2D findShortestEnemy(Collider2D[] colliders) { Debug.Assert(colliders.Length > 0); float minDistance = 99999999; Collider2D enemy = null; for (int i = 0; i < colliders.Length; i++) { if (colliders[i].tag == "character" || colliders[i].tag == "castle" || colliders[i].tag == "tower") { if (colliders[i].tag == "tower") { Debug.Assert(false); return(colliders[i]); } Vector2 enemyPos = colliders[i].gameObject.transform.position; float distance = Vector2.Distance(enemyPos, transform.position); if (minDistance > distance) { minDistance = distance; enemy = colliders[i]; } } else if (colliders[i].tag == "tree" || colliders[i].tag == "stone") { SpriteManage.DESTROY_SPRITE(colliders[i].gameObject); } } return(enemy); }
void Update() { if (mainGame.m_IsPause) { return; } m_TimeActive -= Time.deltaTime; if (m_TimeActive <= 0) { SpriteManage.DESTROY_SPRITE(gameObject); } }
public override void Attack() { if (m_EnemyTarget != null) { if (!m_EnemyTarget.active) { m_EnemyTarget = null; return; } float distance = Vector2.Distance(transform.position, m_EnemyTarget.transform.position); calculateAttackDistance(); if (distance < m_AttackDistance) { if (m_AttackDelay <= 0) { MusicHandler.PlaySound(SoundType.RED_ENEMY_ATTACK); m_AttackDelay = DEFAULT_ATTACK_DELAY; if (m_EnemyTarget.tag == "tree") { m_EnemyTarget.GetComponent <Tree>().m_health--; if (m_EnemyTarget.GetComponent <Tree>().m_health <= 0) { SpriteManage.DESTROY_SPRITE(m_EnemyTarget); m_EnemyTarget = null; } } else if (m_EnemyTarget.tag == "stone") { m_EnemyTarget.GetComponent <Rock>().m_health--; if (m_EnemyTarget.GetComponent <Rock>().m_health <= 0) { SpriteManage.DESTROY_SPRITE(m_EnemyTarget); m_EnemyTarget = null; } } } } // moving to the target else { float angle = Mathf.Atan2(m_EnemyTarget.transform.position.y - transform.position.y, m_EnemyTarget.transform.position.x - transform.position.x); Vector2 pos = transform.position; pos.x += Mathf.Cos(angle) * MOVE_SPEED * Time.fixedDeltaTime; pos.y += Mathf.Sin(angle) * MOVE_SPEED * Time.fixedDeltaTime; transform.position = pos; } } }
void FixedUpdate() { if (mainGame.m_IsPause) { return; } if (!m_Arrived) { float angle = Mathf.Atan2(m_Castle.transform.position.y - transform.position.y, m_Castle.transform.position.x - transform.position.x); Vector2 pos = transform.position; pos.x += Mathf.Cos(angle) * MOVE_SPEED * Time.fixedDeltaTime; pos.y += Mathf.Sin(angle) * MOVE_SPEED * Time.fixedDeltaTime; transform.position = pos; } else { m_TimeRespawnEnemy -= Time.fixedDeltaTime; if (m_TimeRespawnEnemy <= 0) { if (m_NumberEnemies > 0) { m_TimeRespawnEnemy = RESPAWN_TIME; m_NumberEnemies--; Vector2 castlePos = m_Castle.transform.position; Vector2 currentPos = transform.position; float angle = Mathf.Atan2(castlePos.y - currentPos.y, castlePos.x - currentPos.x); float offset = m_Wall.GetComponent <BoxCollider2D>().size.x; currentPos.x += Mathf.Cos(angle) + offset; currentPos.x += Mathf.Sin(angle) + offset; GameObject enemy = SpriteManage.CREATE_SPRITE(SpriteType.RED_ENEMY); enemy.transform.position = currentPos; } // delete the boat else { SpriteManage.DESTROY_SPRITE(gameObject); } } } checkHealth(); }
void prepareTowerToPlace() { // cancel placing tower if (m_isPlacingTower) { // if the placing tower still active, then cancel it if (m_currentBuilding != null) { SpriteManage.DESTROY_SPRITE(m_currentBuilding); m_currentBuilding = null; } m_isPlacingTower = false; } // start placing tower else { m_isPlacingTower = true; m_currentBuilding = SpriteManage.CREATE_SPRITE(SpriteType.TOWER); } }
void OnTriggerEnter2D(Collider2D col) { GameObject temp = col.gameObject; if (temp.tag == "treeLog") { SpriteManage.DESTROY_SPRITE(temp); m_inventory.addNewItem(ItemType.WOOD); } else if (temp.tag == "stoneItem") { SpriteManage.DESTROY_SPRITE(temp); m_inventory.addNewItem(ItemType.STONE); } else if (temp.tag == "heart") { SpriteManage.DESTROY_SPRITE(temp); m_Health += DEFAULT_HEART_HEALTH; } }
// Update is called once per frame void Update() { if (mainGame.m_IsPause) { return; } m_AttackDelay -= Time.fixedDeltaTime; if (m_AttackDelay <= 0) { m_AttackDelay = 0; } //checkHealth(); if (m_VisibleTime <= 0) { SpriteManage.DESTROY_SPRITE(gameObject); } m_VisibleTime -= Time.deltaTime; findEnemy(); updateHealthBar(); checkHealth(); }
void OnTriggerEnter2D(Collider2D colldier) { if (colldier.GetType() == typeof(CircleCollider2D)) { return; } GameObject obj = colldier.gameObject; AI ai = obj.GetComponent <AI>(); if (ai) { if (ai.m_Side == m_Side) { return; } ai.setHealth(ai.getHealth() - m_Damage); Debug.Log("update enemy health: " + ai.getHealth()); SpriteManage.DESTROY_SPRITE(gameObject); } else { } }