void Shoot(Vector3 targetLocation) { timer = 0f; canFire = false; weaponComponents.gunAudio.Play(); weaponComponents.gunLight.enabled = true; weaponComponents.gunParticles.Stop(); weaponComponents.gunParticles.Play(); weaponComponents.gunLine.enabled = true; weaponComponents.gunLine.SetPosition(0, weaponComponents.barrel.transform.position); shootRay.origin = weaponComponents.barrel.transform.position; shootRay.direction = (targetLocation + Vector3.up * 0.5f) - weaponComponents.barrel.transform.position; if (Physics.Raycast(shootRay, out shootHit, range, shootMask)) { Entity enemy = shootHit.collider.GetComponent <Entity> (); if (enemy != null) { enemy.OnHit(damage, shootHit.point); } weaponComponents.gunLine.SetPosition(1, shootHit.point); } else { weaponComponents.gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range); } }
private void OnCollisionEnter2D(Collision2D collision) { Entity entity = collision.gameObject.GetComponent <Entity>(); if (entity) { entity.OnHit(damage); } }
private void OnTriggerEnter2D(Collider2D collider) { Entity entity = collider.gameObject.GetComponent <Entity>(); if (entity) { entity.OnHit(damage); } }
void Explode() { Collider[] cols = Physics.OverlapSphere(transform.position, explosionRadius, targetMask); foreach (Collider c in cols) { Entity e = c.GetComponent <Entity>(); if (e != null) { e.OnHit(this); } } }
private void Start() { Collider2D[] results = new Collider2D[4]; int numHits = Physics2D.OverlapCircle(transform.position, radius, filter, results); for (int iResult = 0; iResult < numHits; ++iResult) { Debug.Log(results[iResult].gameObject); Entity hitEntity = results[iResult].gameObject.GetComponent <Entity>(); if (hitEntity) { hitEntity.OnHit(damage); } } }
// Use this for initialization void Start() { Collider[] col = Physics.OverlapSphere(transform.position, 10.0f); foreach (Collider c in col) { Entity e = c.gameObject.GetComponent <Entity> (); if (e != null) { EnemyHit hit; hit.damage = 20; e.OnHit(hit); } } }
private void OnTriggerEnter2D(Collider2D collision) { EnemyEntity enemy = collision.gameObject.GetComponentInParent <EnemyEntity>(); if (enemy == null) { // Hit tower or some other thing return; } if (source != null) { source.OnHit(enemy, damage); } HitTarget(enemy); }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.GetComponent <Entity>() != null) { if (collision.GetComponent <Player>() != null) { return; } Entity e = collision.GetComponent <Entity>(); //e.GetComponent<SpriteRenderer>().color = new Color(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), 1); e.OnHit(-10); Rigidbody2D rb = e.GetComponent <Rigidbody2D>(); if (rb != null) { rb.AddForce((e.transform.position - transform.position).normalized * 500); } } }
public virtual void OnHit(Collider hit) { Entity entity = hit.gameObject.GetComponent <Entity>(); if (entity != null) { if ((owner.enemyFactions & entity.currentFaction) == entity.currentFaction) { owner.OnHit(entity, damage); entity.Damage(owner, damage); if (knockback) { Vector3 direction = (entity.transform.position - owner.transform.position).normalized; entity.gameObject.GetComponent <Rigidbody>().AddForce(direction * knockbackForce, ForceMode.Impulse); } } } }
public override void OnItersect(Box box, Entity owner1, Entity owner2) { if (box is HitBox) { //TODO: deal with this appropratiely later Debug.Log("CLASH"); return; } Vector2 impact = HitData.TrajectoryModData.Impact; float angularImpact = HitData.TrajectoryModData.AngularImpact; if (!owner1.FacingRight) { impact.x *= -1.0f; angularImpact *= -1.0f; } HitBox hitBox = new HitBox(impact + HitData.MomentumGainData.GetMomentumGain(owner1.Velocity), angularImpact, this); owner1.OnHit(hitBox, (HurtBox)box, owner2); owner2.OnHitReceived(hitBox, (HurtBox)box, owner1); }
void Explode() { Collider[] col = Physics.OverlapSphere(transform.position, 10.0f); foreach (Collider c in col) { Entity e = c.gameObject.GetComponent <Entity> (); if (e != null) { if (e.gameObject.layer != LayerMask.NameToLayer("Survivor")) { EnemyHit hit; hit.damage = 50; e.OnHit(hit); } } } Instantiate(explosionAnimPrefab, transform.position, explosionAnimPrefab.transform.rotation); Destroy(gameObject); }
public virtual void OnHit(Entity target) { if (isHealing) { target.Heal(damage); } else { target.Damage(owner, damage); if (owner != null) { owner.OnHit(target, damage); } } if (knockback) { if (target != null && owner != null) { Vector3 direction = (target.transform.position - owner.transform.position).normalized; target.gameObject.GetComponent <Rigidbody>().AddForce(direction * knockbackForce, ForceMode.Impulse); } } }
public virtual void OnHit(Entity target) { if (target.spirit == null) return; target.OnHit(this); if (user.isPlayer) { Debug.Log( "Hit! " + user + " -> " + target + " " + "power: " + target.spirit.light.power + " / " + target.spirit.darkness.power + ", exp: " + target.spirit.light.exp + " / " + target.spirit.darkness.exp ); } }
void Shoot(Vector3 targetLocation) { GameManager.UseAmmo(WEAPON_TYPE.SNIPER); timer = 0f; canFire = false; weaponComponents.gunAudio.Play(); weaponComponents.gunLight.enabled = true; weaponComponents.gunParticles.Stop(); weaponComponents.gunParticles.Play(); weaponComponents.gunLine.enabled = true; weaponComponents.gunLine.SetPosition(0, weaponComponents.barrel.transform.position); shootRay.origin = weaponComponents.barrel.transform.position; shootRay.direction = (targetLocation + Vector3.up * 0.5f) - weaponComponents.barrel.transform.position; RaycastHit[] shootHits; shootHits = Physics.RaycastAll(shootRay, range, shootMask); Vector3 farthestHitPoint = Vector3.zero; if (shootHits.Length > 0) { List <RaycastHit> sortedHits = SortHitListByDistance(shootHits); for (int i = 0; i < sortedHits.Count; i++) { RaycastHit hit = sortedHits[i]; farthestHitPoint = hit.point; Entity enemy = hit.collider.GetComponent <Entity>(); ClownShield clownShield = hit.collider.GetComponent <ClownShield>(); if (enemy != null) { enemy.OnHit(this, hit.point); if (clownShield != null) { break; } } else { break; } } } if (shootHits.Length > 0) { weaponComponents.gunLine.SetPosition(1, farthestHitPoint); } else { weaponComponents.gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range); } }
public virtual void OnHit(Entity target) { if (target.spirit == null) return; target.OnHit(this); if (!(user is Dolphin)) return; /* Debug.Log( "Hit! " + user + " -> " + target + " " + "power: " + target.spirit.light.power + " / " + target.spirit.darkness.power + ", exp: " + target.spirit.light.exp + " / " + target.spirit.darkness.exp ); */ }
void Shoot(Vector3 targetLocation) { GameManager.UseAmmo(WEAPON_TYPE.SHOTGUN); timer = 0f; canFire = false; weaponComponents.gunAudio.Play(); weaponComponents.gunLight.enabled = true; weaponComponents.gunParticles.Stop(); weaponComponents.gunParticles.Play(); //gunLine.enabled = true; //gunLine.SetPosition (0, transform.position); Ray[] rays = CreateShotgunSpread(); for (int i = 0; i < rays.Length; i++) { RaycastHit[] hits = Physics.RaycastAll(rays[i].origin, rays[i].direction, range, shootMask); Vector3 farthestHitPoint = Vector3.zero; if (hits.Length > 0) { List <RaycastHit> sortedHits = SortHitListByDistance(hits); foreach (RaycastHit rHit in sortedHits) { Entity enemy = rHit.collider.GetComponent <Entity>(); farthestHitPoint = rHit.point; if (enemy != null) { enemy.OnHit(this, shootHit.point); break; } else { break; } } } GameObject obj = Instantiate(LineRenderPrefab, weaponComponents.barrel.transform.position, Quaternion.identity); LineRenderer line = obj.GetComponent <LineRenderer>(); line.enabled = true; line.SetPosition(0, rays[i].origin); if (hits.Length > 0) { line.SetPosition(1, farthestHitPoint); } else { line.SetPosition(1, rays[i].origin + rays[i].direction * range); } } }