public virtual void damageMob(MobBehaviour mb) { if (this.mobHit == null) { this.mobHit = mb; this.hurt(this.mobHit); } }
public static MobBehaviour InstantiateMob(Vector3 position, MobBehaviour mob, MobSpawner spawn) { MobBehaviour newGm = GameObject.Instantiate <MobBehaviour>(mob); newGm.Init(new Vector3(position.x, position.y, 5), spawn); newGm.transform.SetParent(backGround.transform, true); BoxCollider2D box = newGm.gameObject.AddComponent <BoxCollider2D>(); box.isTrigger = true; return(newGm); }
protected virtual void updateActiveList() { for (int i = 0; i < this.activeMobs.Count; i++) { MobBehaviour mb = this.activeMobs[i]; if (!mb.gameObject.activeSelf) { this.activeMobs.RemoveAt(i); i--; } } }
public void GetHitOnServer(GameObject tar) { SetTarget(tar); inCombat = true; rbody.bodyType = RigidbodyType2D.Dynamic; foreach (uint idmb in teammates) { MobBehaviour mb = NetworkIdentity.spawned[idmb].gameObject.GetComponent <MobBehaviour>(); mb.SetTarget(tar); mb.inCombat = true; mb.rbody.bodyType = RigidbodyType2D.Dynamic; } }
private void OnTriggerEnter(Collider other) { if (other.tag == "Mob" && FightEnemy == null) { MobBehaviour otherMb = GetComponent <MobBehaviour>(); if (otherMb.ownerId != ownerId) { //otherMb.agent.enabled = false; //otherMb.CurrentState = EnemyState.Fighting; //otherMb.FightEnemy = this; FightEnemy = otherMb; CurrentState = EnemyState.Fighting; agent.enabled = false; } } }
public void spawnMob(int ID) { if (canSpawn) { GameObject mob; if (queue.Count == 0) { mob = Instantiate(mobs[ID], spawns[flagCount].position, Quaternion.identity); AI.mobsKinds[flagCount][ID]++; mob.GetComponent <NavMeshAgent>().speed = mobs[ID].GetComponent <MobBehaviour>().movingSpeed; } else { mob = Instantiate(mobs[queue[0]], spawns[lanes[0]].position, Quaternion.identity); AI.mobsKinds[lanes[0]][queue[0]]++; mob.GetComponent <NavMeshAgent>().speed = mobs[queue[0]].GetComponent <MobBehaviour>().movingSpeed; queue.RemoveAt(0); lanes.RemoveAt(0); if (queue.Count < maxQueue) { queue.Add(ID); lanes.Add(flagCount); } } MobBehaviour enemy = mob.GetComponent <MobBehaviour>(); enemy.baseTarget = _enemyBase.transform; Debug.Log(enemy.baseTarget); enemy.LaneIndex = flagCount; enemy.ownerId = 1; canSpawn = false; StartCoroutine(cooldown(ID, enemy.GetComponent <MobBehaviour>().spawnTime)); } else { if (queue.Count < maxQueue) { queue.Add(ID); lanes.Add(flagCount); } } }
public void spawnMob(int ID, int lane) { if (canSpawn) { GameObject mob; if (queue.Count == 0) { mob = Instantiate(mobs[ID], spawns[lane].position, Quaternion.identity); mob.GetComponent <NavMeshAgent>().speed = mobs[ID].GetComponent <MobBehaviour>().movingSpeed; } else { mob = Instantiate(mobs[queue[0]], spawns[lanes[0]].position, Quaternion.identity); mob.GetComponent <NavMeshAgent>().speed = mobs[queue[0]].GetComponent <MobBehaviour>().movingSpeed; queue.RemoveAt(0); lanes.RemoveAt(0); if (queue.Count < maxQueue) { queue.Add(ID); lanes.Add(lane); } } MobBehaviour enemy = mob.GetComponent <MobBehaviour>(); enemy.baseTarget = _enemyBase.transform; enemy.LaneIndex = lane; enemy.ownerId = 2; canSpawn = false; StartCoroutine(cooldown(ID, 5f)); } else { if (queue.Count < maxQueue) { queue.Add(ID); lanes.Add(lane); } } }
public void GetHit(Collider2D collision) { if (collision.transform.parent != null) { //collision is the player(players weapon to be exact) if (collision.transform.name == "Weapon") { SetTarget(collision.transform.parent.gameObject); inCombat = true; rbody.bodyType = RigidbodyType2D.Dynamic; foreach (uint idmb in teammates) { MobBehaviour mb = NetworkIdentity.spawned[idmb].gameObject.GetComponent <MobBehaviour>(); mb.SetTarget(collision.transform.parent.gameObject); mb.inCombat = true; mb.rbody.bodyType = RigidbodyType2D.Dynamic; } target.GetComponent <PlayerRpg>().Attack(gameObject); } } }
IEnumerator cooldown(int ID, float time) { yield return(new WaitForSeconds(time)); canSpawn = true; if (queue.Count != 0) { GameObject mob = Instantiate(mobs[queue[0]], spawns[lanes[0]].position, Quaternion.identity); AI.mobsKinds[lanes[0]][queue[0]]++; mob.GetComponent <NavMeshAgent>().speed = mobs[queue[0]].GetComponent <MobBehaviour>().movingSpeed; MobBehaviour enemy = mob.GetComponent <MobBehaviour>(); enemy.baseTarget = _enemyBase.transform; Debug.Log(enemy.baseTarget); enemy.LaneIndex = flagCount; enemy.ownerId = 1; queue.RemoveAt(0); lanes.RemoveAt(0); canSpawn = false; StartCoroutine(cooldown(ID, 2f)); } }
/// <summary> /// Adds an behavior flag. /// </summary> /// <param name="flag">the flag</param> public void AddBehavior(MobBehaviour behaviorEnum) { behavior |= behaviorEnum.GetFlag(); }
protected virtual void hurt(MobBehaviour mb) { mb.hurt(this.power); this.gameObject.SetActive(false); }
void Start() { this.mb = this.transform.GetComponentInParent <MobBehaviour>(); }
protected override void onEnable() { base.onEnable(); this.mobHit = null; }
public override void spawn(MobBehaviour mb) { base.spawn(mb); mb.transform.rotation = rotation; }
public static int GetFlag(this MobBehaviour behaviour) { return((int)Math.Pow(2, (int)behaviour)); }
/// <summary> /// Removes an behavior flag. /// </summary> /// <param name="flag">the <see cref="MobBehaviour"/></param> public void RemoveBehavior(MobBehaviour behaviorEnum) { behavior &= ~behaviorEnum.GetFlag(); }
/// <summary> /// Determines if the <see cref="BaseInteractiveObject"/> has a specific behavior flag. /// </summary> /// <param name="behaviorEnum">the flag</param> /// <returns>true if the <see cref="BaseInteractiveObject"/> has the flag; false otherwise</returns> public bool HasBehavior(MobBehaviour behaviorEnum) { return(HasBehavior(behaviorEnum.GetFlag())); }