public void AddItem(int value) { Item newItem = ItemGenerator.GenerateItem(value); playerControl.PlayerClass.AddItem(newItem); GameObject go = EntitySpawnManager.InstantSpawn(UIItemPoolName, Vector3.zero, Quaternion.identity, countEntity: false); go.transform.parent = UIItemHolder.transform; float y = (int)((playerControl.PlayerClass.items.Count - 1) / 4) * 0.05f; float x = (int)((playerControl.PlayerClass.items.Count - 1) % 4) * 0.25f; go.GetComponent <UIButton>().Text = newItem.Description; go.GetComponent <UIButton>().RelativePosition.x = x; go.GetComponent <UIButton>().RelativePosition.y = y; UIItemHolder.GetComponent <UIRect>().AddChild(go.GetComponent <UIButton>()); UIItemHolder.GetComponent <UIRect>().UpdateChildren(); if (UIItemHolder.GetComponent <UIScrollPanel>()) { UIItemHolder.GetComponent <UIScrollPanel>().RelHeight = (y + 0.05f); } }
public void RemovePlayer(PlayerController player) { if (player == null) { return; } int index = 0; for (int i = 0; i < Players.Length; i++) { if (Players[i] == player) { index = i; break; } } Destroy(Cameras[index].gameObject); Cameras[index] = null; GameEventHandler.TriggerPlayerLeft(player, player.Name); Players[index] = null; EntitySpawnManager.RemoveHitAble(player.GetComponent <HitAble>()); Destroy(player.gameObject); }
public virtual void Hit(Vector3 HitPosition, Vector3 HitDirection, float forceAmount = 0f) { if (IsDead) { return; } if (sendFurther && reciever) { reciever.Hit(HitPosition, HitDirection, forceAmount); return; } if (HitEffect) { int layermask = 1 << gameObject.layer; RaycastHit2D hit = Physics2D.RaycastAll(HitPosition - HitDirection, HitDirection, HitDirection.magnitude * 2f, layermask).FirstOrDefault(o => o.collider == collider2D); if (hit) { EntitySpawnManager.Spawn(HitEffectPoolName, HitPosition, Quaternion.FromToRotation(Vector3.back, hit.normal), countEntity: false, forceDirectSpawn: true); if (forceAmount != 0) { Force(HitPosition, HitDirection.normalized, forceAmount); } } } }
public void AddItem(Item item) { items.Add(item); item.Start(this); GameObject go = EntitySpawnManager.InstantSpawn(UIItemPickupPoolName, transform.position, Quaternion.identity, countEntity: false); go.GetComponent <UIItemPickup>().text = item.Description; }
public override void Do(PlayerClass player) { base.Do(player); for (int i = 0; i < amount; i++) { GameObject go = EntitySpawnManager.InstantSpawn(Projectile, player.playerTransform.position + ShootingPosition, Quaternion.FromToRotation(Vector3.up, Vector3.left), countEntity: false); go.GetComponent <Rocket>().Impulse(Vector3.up * 5.0f); go.GetComponent <Rocket>().player = player.playerControl; go.GetComponent <Rocket>().damage = player.GetAttributeValue(AttributeType.DAMAGE) * DamageMult; } }
public void TrySpawning(string poolName, Vector3 position) { RaycastHit2D hit = Physics2D.Raycast(position + Vector3.up, Vector3.down, maxDistanceDown, GroundLayer); if (hit) { if (!Physics2D.OverlapCircle(hit.point, minSpace, BaseLayer)) { EntitySpawnManager.Spawn(poolName, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal)); } } }
public override void Do(PlayerClass player) { base.Do(player); for (int i = 0; i < amount; i++) { //Shoot Or Something GameObject go = EntitySpawnManager.InstantSpawn(Projectile, player.playerTransform.position + new Vector3(ShootingPosition.x * player.playerTransform.localScale.x, ShootingPosition.y, 0) + Random.insideUnitSphere * randomPositioning, player.playerTransform.rotation, countEntity: false); go.SendMessage("SetDirection", Vector2.right * player.playerTransform.localScale.x, SendMessageOptions.DontRequireReceiver); go.SendMessage("SetPlayer", player.playerControl, SendMessageOptions.DontRequireReceiver); go.SendMessage("SetDamage", DamageMult * player.GetAttributeValue(AttributeType.DAMAGE), SendMessageOptions.DontRequireReceiver); } }
void OnTriggerEnter2D(Collider2D other) { if (other && other.gameObject && other.gameObject.tag == "Player" && GetComponent <EnemieBase>()) { GetComponent <EnemieBase>().Damage(new Damage() { amount = amount, type = DamageType.MEELE, other = transform }); EntitySpawnManager.InstantSpawn("Blood", transform.position + Vector3.up * 0.2f, Quaternion.identity, countEntity: false); } }
public void PlayOneShot(SoundEffect effect, Vector3 position) { for (int i = 0; i < GameManager.Instance.GetCameras().Length; i++) { if (GameManager.Instance.GetCameras()[i] != null) { Vector3 camDiffPos = position - GameManager.Instance.GetCameras()[i].transform.position; GameObject go = EntitySpawnManager.InstantSpawn("SoundEffect", camDiffPos, Quaternion.identity, countEntity: false); if (go && go.GetComponent <SoundEffectObject>()) { go.GetComponent <SoundEffectObject>().PlayOneShot(effect); } } } }
public virtual void Die() { for (int i = 0; i < Drops.Length; i++) { if (Drops[i].WantsToSpawn) { for (int a = 0; a < Drops[i].Amount; a++) { EntitySpawnManager.Spawn(Drops[i].Next().poolName, transform.position, Quaternion.identity, queue: true); } } } EntitySpawnManager.Despawn(poolName, gameObject, true); GameEventHandler.TriggerEntityDied(this); }
public void Explode() { HitAbleInfo[] HitAblesInRange = EntitySpawnManager.Instance.GetHitAbleInCircles(transform.position, HitAbleHitMask, ExplosionRange, true); //HitAbleInfo[] collider = EntitySpawnManager.Instance.GetHitAbleInCircles(transform.position, HitAbleHitMask, distance, true, false); for (int i = 0; i < HitAblesInRange.Length; i++) { HitAbleInfo item = HitAblesInRange[i]; if (item == null || item.hitAble == null) { continue; } float distance = 0f; distance = item.distance; float damageMult = (ExplosionRange - distance); item.hitAble.Damage(new Damage() { type = DamageType.EXPLOSION, amount = damageMult * damage, DamageFromAPlayer = true, player = player, other = player.transform }); item.hitAble.Hit(item.ColliderCenter, (item.ColliderCenter - transform.position), force); /* * Debug.Log("Distance: " + HitAblesInRange[i].distance); * HitAblesInRange[i].hitAble.Damage(new Damage() * { * DamageFromAPlayer = true, * player = player, * amount = Mathf.Min(distance - HitAblesInRange[i].distance, 0.0f), * type = DamageType.EXPLOSION, * other = player.transform * }); * HitAblesInRange[i].hitAble.Hit(HitAblesInRange[i].ColliderCenter, (HitAblesInRange[i].ColliderCenter - transform.position), force); * */ } AudioEffectController.Instance.PlayOneShot(explosion, transform.position); EntitySpawnManager.Spawn(hitEffektPoolName, transform.position, Quaternion.identity, forceDirectSpawn: true, countEntity: false); EntitySpawnManager.Despawn(poolName, gameObject, false); }
public void Spawn() { if (EntitySpawnManager.Instance.GetNearestPlayers(BaseTransform.position, false, Range) != null) { var rnd = Random.value; foreach (var item in spawnInfos) { if (rnd < item.weight) { EntitySpawnManager.Spawn(item.poolName, BaseTransform.position, Quaternion.identity); return; } rnd -= item.weight; } } }
private void Hit(GameObject other, Vector3 position) { if (other && other.GetComponent <HitAble>()) { if (gameObjectHitted.Contains(other)) { return; } HitAble target = other.GetComponent <HitAble>(); target.Damage(new Damage() { DamageFromAPlayer = true, player = player, amount = damage, type = DamageType.RANGED, other = player.transform }); target.Hit(position, rigidbody2D.velocity * Time.fixedDeltaTime, force); gameObjectHitted.Add(other); AudioEffectController.Instance.PlayOneShot(HitEffect, transform.position); } else { EntitySpawnManager.InstantSpawn(hitEffektPoolName, position, Quaternion.identity, countEntity: false); EntitySpawnManager.Despawn(poolName, gameObject, false); return; } EntitySpawnManager.InstantSpawn(hitEffektPoolName, position, Quaternion.identity, countEntity: false); if (pierceCount >= pierceAmount) { rigidbody2D.velocity = Vector2.zero; GameObjectPool.Instance.Despawn(poolName, gameObject); } else { pierceCount++; } }
public override void Do(PlayerClass player) { base.Do(player); //Shoot Or Something Vector3 position = new Vector3(ShootingPosition.x * player.playerTransform.localScale.x, ShootingPosition.y, 0); if (player.playerControl.Crouching) { position = new Vector3(CrouchShootingPosition.x * player.playerTransform.localScale.x, CrouchShootingPosition.y, 0); } GameObject go = EntitySpawnManager.InstantSpawn(Projectile, player.playerTransform.position + position, player.playerTransform.rotation, countEntity: false); go.SendMessage("SetDirection", Vector2.right * player.playerTransform.localScale.x, SendMessageOptions.DontRequireReceiver); go.SendMessage("SetPlayer", player.playerControl, SendMessageOptions.DontRequireReceiver); go.SendMessage("SetDamage", DamageMult * player.GetAttributeValue(AttributeType.DAMAGE), SendMessageOptions.DontRequireReceiver); go.SendMessage("SetPierceAmount", pierceAmount, SendMessageOptions.DontRequireReceiver); go.SendMessage("SetForce", force, SendMessageOptions.DontRequireReceiver); player.playerControl.rigidbody2D.MovePosition(player.playerControl.rigidbody2D.position + KnockBack * player.playerTransform.localScale.x * Time.fixedDeltaTime); }
public override void Do(PlayerClass player) { base.Do(player); for (int i = 0; i < buffs.Length; i++) { player.AddBuff(buffs[i]); } for (int i = 0; i < Effects.Length; i++) { if (Effects[i].WantsToSpawn) { for (int a = 0; a < Effects[i].Amount; a++) { GameObject go = EntitySpawnManager.InstantSpawn(Effects[i].Next().poolName, player.playerTransform.position + Vector3.up * 1.5f, Quaternion.identity, countEntity: false); go.transform.parent = player.playerTransform; } } } }
public override void Start() { base.Start(); healthBar.UpdateBar(true); if (StartFullHealth) { HealFull(); } if (Debug && EntitySpawnManager.ContainsHitAble(this)) { EntitySpawnManager.AddHitAble(this); } //Correct Positioning based on floor normal RaycastHit2D hit = Physics2D.Raycast(transform.position + transform.up, -transform.up, 2f, GroundLayer); if (hit) { transform.localRotation = Quaternion.FromToRotation(Vector3.up, hit.normal); } }
public void Explode() { if (!player || !player.transform) { return; } HitAbleInfo[] HitAblesInRange = EntitySpawnManager.Instance.GetHitAbleInCircles(transform.position, HitAbleHitMask, ExplosionRange, true); foreach (var item in HitAblesInRange) { if (item == null || item.hitAble == null) { continue; } float distance = 0f; distance = item.distance; float damageMult = (ExplosionRange - distance); item.hitAble.Damage(new Damage() { type = DamageType.EXPLOSION, amount = damageMult * damage, DamageFromAPlayer = true, player = player, other = player.transform }); item.hitAble.Hit(item.Transform.position, (item.ColliderCenter - transform.position), force); } AudioEffectController.Instance.PlayOneShot(explosion, transform.position); EntitySpawnManager.InstantSpawn(hitEffektPoolName, transform.position, Quaternion.identity, countEntity: false); GameObjectPool.Instance.Despawn(poolName, gameObject); }
public void SelectClass(int id) { RemovePlayer(Players[currentPlayerSelectingClass]); GameObject newPlayer = (GameObject)Object.Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); EntitySpawnManager.AddHitAble(newPlayer.GetComponent <HitAble>()); newPlayer.SetActive(false); Players[currentPlayerSelectingClass] = newPlayer.GetComponent <PlayerController>(); GameObject newCam = (GameObject)Object.Instantiate(cameraPrefab, new Vector3(0, 0, -10), Quaternion.identity); newCam.SetActive(false); newCam.GetComponent <PlayerUI>().playerControl = Players[currentPlayerSelectingClass]; Cameras[currentPlayerSelectingClass] = newCam.GetComponent <CameraController>(); Cameras[currentPlayerSelectingClass].player = newPlayer.transform; Cameras[currentPlayerSelectingClass].playerControl = newPlayer.GetComponent <PlayerController>(); Players[currentPlayerSelectingClass].PlayerId = currentPlayerSelectingClass; PlayerClass playerClass = (PlayerClass)Object.Instantiate(PlayerClasses[id]); playerClass.transform.parent = newPlayer.transform; Players[currentPlayerSelectingClass].PlayerClass = playerClass; slotButtons[currentPlayerSelectingClass].Text = "Selected: " + Players[currentPlayerSelectingClass].PlayerClass.name.Replace("(Clone)", "") + "\nClick to delete"; slotButtons[currentPlayerSelectingClass].ButtonStyle.normal.textColor = Color.green; UpdateReadyButton(); UpdateSelectedClassUI(); //SelectNextPlayerSlot(); }
// Update is called once per frame void Update() { timer -= Time.deltaTime; if (timer <= 0) { EntitySpawnManager.Despawn(poolName, gameObject, false); //GameObjectPool.Instance.Despawn(poolName, gameObject); } /*timer = Mathf.Clamp(timer + Time.deltaTime, 0f, time); * * float size = startSize + endSize * (timer / time); * transform.localScale = new Vector3(size, size, size); * * if (timer > time * 0.8f) * { * GetComponent<SpriteRenderer>().color = new Color(1,1,1,time - timer); * } * * if (timer == time) * { * GameObjectPool.Instance.Despawn(poolName, gameObject); * }*/ }
public void PlayOneShot(SoundEffect effect) { GameObject go = EntitySpawnManager.InstantSpawn("SoundEffect", transform.position, Quaternion.identity, countEntity: false); go.GetComponent <SoundEffectObject>().PlayOneShot(effect); }
void OnTriggerEnter2D(Collider2D other) { TriggerHit(other); EntitySpawnManager.Despawn(poolName, gameObject, true); }
void Awake() { Instance = this; }
private void SpawnRocket(PlayerClass playerClass) { player = playerClass.playerControl; EntitySpawnManager.Spawn(RocketPoolName, playerClass.playerTransform.position + Vector3.up * 2f, Quaternion.FromToRotation(Vector3.up, Vector3.left), callBack: RocketSpawned, queue: true, countEntity: false); }