public override void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.GetComponent <Enemy.Enemy>() != null) { //If Collided with Enemy Unit //Reduce Enemy HP (currently no function for that) Enemy.Enemy enemy = other.gameObject.GetComponent <Enemy.Enemy>(); if (prevTarget && enemy != prevTarget) { enemy.Injure(Damage); prevTarget = enemy; } else { prevTarget = enemy; } } else if (other.gameObject.GetComponent <RPGPlayer>() != null) { // Collision handled by player } else if (other.gameObject.GetComponent <Projectile>() != null) { // Do not allow collisions with self return; } else { Disable(); } }
void UpdateTarget() { GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyTag); float shortestDistance = Mathf.Infinity; GameObject nearestEnemy = null; foreach (GameObject enemy in enemies) { float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position); if (distanceToEnemy < shortestDistance) { shortestDistance = distanceToEnemy; nearestEnemy = enemy; } } if (nearestEnemy != null && shortestDistance <= range) { target = nearestEnemy.transform; _targetEnemy = target.GetComponent <Enemy.Enemy>(); } else { target = null; } }
public override void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.GetComponent<Enemy.Enemy>() != null) { //If Collided with Enemy Unit //Reduce Enemy HP (currently no function for that) Enemy.Enemy enemy = other.gameObject.GetComponent<Enemy.Enemy>(); if (prevTarget && enemy != prevTarget) { enemy.Injure(Damage); prevTarget = enemy; } else { prevTarget = enemy; } } else if (other.gameObject.GetComponent<RPGPlayer>() != null) { // Collision handled by player } else if (other.gameObject.GetComponent<Projectile>() != null) { // Do not allow collisions with self return; } else { Disable(); } }
private void Damage(Transform enemy) { Enemy.Enemy e = enemy.GetComponent <Enemy.Enemy>(); if (e != null) { e.TakeDamage(damage); } }
public virtual void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.GetComponent <Enemy.Enemy>() != null) { //If Collided with Enemy Unit //Reduce Enemy HP (currently no function for that) Enemy.Enemy enemy = collision.gameObject.GetComponent <Enemy.Enemy>(); enemy.Injure(Damage); } }
private void setCommonData(GameObject go) { Enemy.Enemy e = go.GetComponent <Enemy.Enemy>(); if (e) { e.Manager = this; e.WaypointMap = WaypointMap; e.PlayerList.Add(RefPlayer1.gameObject); e.PlayerList.Add(RefPlayer2.gameObject); e.transform.localScale = RefPlayer1.transform.localScale; } }
private Enemy.Enemy findNearestEnemy() { if (bounceCount >= MaxBounce) { return(null); } ++bounceCount; // TODO: Find new target float nearestDist = 0.0f; Enemy.Enemy nearestEnemy = null; float range = DetectionRadius * RefTileMap.TileSize; // Temp disable previous target collider so that raycast works prevTarget.GetComponent <BoxCollider2D>().enabled = false; foreach (GameObject go in RefEnemyManager.ActiveResourcesList) { Enemy.Enemy e = go.GetComponent <Enemy.Enemy>(); // Cannot assign to the current enemy you're on and have to be within range specified if (go != prevTarget.gameObject /*(e.transform.position - transform.position).sqrMagnitude <= rangeSqr*/) { LayerMask mask = 1 << 12; RaycastHit2D raycast = Physics2D.Raycast(transform.position, (go.transform.position - transform.position).normalized, range, mask.value); if (raycast) { // Within range and not on current collided enemy if (nearestEnemy) { // Nearest exists, check distance if (raycast.distance < nearestDist) { nearestDist = raycast.distance; nearestEnemy = raycast.collider.gameObject.GetComponent <Enemy.Enemy>(); } } else { // Nearest does not exists, direct assign nearestDist = raycast.distance; nearestEnemy = raycast.collider.gameObject.GetComponent <Enemy.Enemy>(); } } } } // Enable previous target collider so that everything is back to normal prevTarget.GetComponent <BoxCollider2D>().enabled = true; return(nearestEnemy); }
// Update is called once per frame protected override void Update() { if (target) { // Move towards target transform.position = Vector3.MoveTowards(transform.position, target.transform.position, Speed * (float)TimeManager.GetDeltaTime(TimeManager.TimeType.Game)); if (transform.position == target.transform.position) { // Projectile on target //Reduce Enemy HP (currently no function for that) // Find new target if (prevTarget && target != prevTarget) { target.Injure(Damage); prevTarget = target; target = findNearestEnemy(); if (!target) { // No new target found Disable(); } } else if (!prevTarget) { target.Injure(Damage); prevTarget = target; // No previous target target = findNearestEnemy(); if (!target) { // No new target found Disable(); } } } } else { base.Update(); } }
/* * FUNCTION: OnCollisionEnter2D * params: Collision2D collision * * brief: Perform Collision functions */ public virtual void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.GetComponent <Enemy.Enemy>() != null) { //If Collided with Enemy Unit //Reduce Enemy HP (currently no function for that) Enemy.Enemy enemy = collision.gameObject.GetComponent <Enemy.Enemy>(); enemy.Injure(Damage); Disable(); } else if (collision.gameObject.GetComponent <RPGPlayer>() != null) { // Collision handled by player } else if (collision.gameObject.GetComponent <Projectile>() != null) { // Do not allow collisions with self return; } else { Disable(); } }
public override void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.GetComponent<Enemy.Enemy>() != null) { Enemy.Enemy enemy = collision.gameObject.GetComponent<Enemy.Enemy>(); if (!target) { target = enemy; GetComponent<Rigidbody2D>().velocity = Vector2.zero; } } else if (collision.gameObject.GetComponent<RPGPlayer>() != null) { // Collision handled by player } else if (collision.gameObject.GetComponent<Projectile>() != null) { // Do not do collision against same type } else { Disable(); } }
public override void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.GetComponent <Enemy.Enemy>() != null) { Enemy.Enemy enemy = collision.gameObject.GetComponent <Enemy.Enemy>(); if (!target) { target = enemy; GetComponent <Rigidbody2D>().velocity = Vector2.zero; } } else if (collision.gameObject.GetComponent <RPGPlayer>() != null) { // Collision handled by player } else if (collision.gameObject.GetComponent <Projectile>() != null) { // Do not do collision against same type } else { Disable(); } }
public override void Disable() { base.Disable(); bounceCount = 0; target = prevTarget = null; }
public override void Disable() { prevTarget = null; Owner.gameObject.SetActive(true); base.Disable(); }
private void Awake() { me = GetComponent <Enemy.Enemy>(); }