public BeamWeapon(World world, WeaponInit init) : base(world, init) { projectile = (BeamProjectile)Type.Projectile; rayPhysics = new RayPhysics(world) { Target = TargetPosition, TargetHeight = TargetHeight }; originPos = init.Convert("OriginPosition", TargetPosition); originHeight = init.Convert("OriginHeight", TargetHeight); setPosition(); impactInterval = init.Convert("ImpactInterval", projectile.ImpactInterval); duration = init.Convert("Duration", Type.ShootDuration); buildupduration = init.Convert("BuildupDuration", projectile.StartupDuration); endduration = init.Convert("EndDuration", projectile.CooldownDuration); if (buildupduration > 0 && projectile.BeamStartUp != null) { useTexture(projectile.BeamStartUp); } else { useTexture(projectile.Beam); } if (projectile.BeamSound != null) { sound = new Sound(projectile.BeamSound); sound.Play(originPos, true); } }
public BeamWeapon(World world, WeaponType type, Target target, Actor origin, uint id) : base(world, type, target, origin, id) { projectile = (BeamProjectile)type.Projectile; impactInterval = projectile.ImpactInterval; rayPhysics = new RayPhysics(world) { Target = TargetPosition, TargetHeight = TargetHeight }; setPosition(); duration = type.ShootDuration; buildupduration = projectile.StartupDuration; endduration = projectile.CooldownDuration; if (buildupduration > 0 && projectile.BeamStartUp != null) { useTexture(projectile.BeamStartUp); } else { useTexture(projectile.Beam); } if (projectile.BeamSound != null) { sound = new Sound(projectile.BeamSound); sound.Play(originPos, true); } }
void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.layer == LayerMask.NameToLayer("Lasers")) { BeamProjectile laser = other.gameObject.GetComponent <BeamProjectile>(); Hero ghost = this.gameObject.GetComponent <Hero>(); ghost.SlowDown(.9f); ghost.Injure(3); } }
private void OnTriggerEnter2D(Collider2D collider) { if (!isDead) { if (collider.tag == "Projectile") { BeamProjectile beam = collider.GetComponent <BeamProjectile>(); if (beam.team != tag) { TakeDamage(beam.damage); Destroy(collider.gameObject, beam.thirstPower); } } } }
private IEnumerator LaunchProjectile() { if (!isCooldown && (Enemy.transform.childCount != 0 && transform.childCount != 0)) { isCooldown = true; int RandomOrigin; int RandomTarget; Vector2 OriginPosition; Vector2 TargetPosition; Transform OriginTransform; float RotationAlly; RandomOrigin = Random.Range(0, transform.childCount); RandomTarget = Random.Range(0, Enemy.transform.childCount); OriginTransform = transform.GetChild(RandomOrigin); OriginPosition = OriginTransform.position; TargetPosition = Enemy.transform.GetChild(RandomTarget).position; RotationAlly = Mathf.Atan2(TargetPosition.y - OriginPosition.y, TargetPosition.x - OriginPosition.x); OriginTransform.rotation = Quaternion.Euler(0, 0, RotationAlly * Mathf.Rad2Deg); Vector2 OriginFirepoint = OriginTransform.GetChild(0).GetChild(Random.Range(0, OriginTransform.GetChild(0).childCount)).position; GameObject launchedProjectile = Instantiate(damageProjectile, OriginFirepoint, Quaternion.Euler(0, 0, RotationAlly * Mathf.Rad2Deg)); BeamProjectile beam = launchedProjectile.GetComponent <BeamProjectile>(); if (beam) { shotAudio.Play(); beam.team = tag; beam.damage = damage; beam.thirstPower = thirstPower; beam.lifetime = lifetimeProjectile; } launchedProjectile.GetComponent <Rigidbody2D>().velocity = new Vector2(Mathf.Cos(RotationAlly), Mathf.Sin(RotationAlly)) * launchForce; yield return(new WaitForSecondsRealtime(attackCooldown)); isCooldown = false; } }
private void OnTriggerEnter2D(Collider2D collider) { if (!isDead) { if (collider.tag == "Projectile") { BeamProjectile beam = collider.GetComponent <BeamProjectile>(); if (collider.GetComponent <BeamProjectile>().team != tag) { Destroy(collider.gameObject, 0.1f); TakeDamage(beam.damage); } } } if (collider.tag == "Enemy") { SquadController enemy = collider.gameObject.GetComponent <SquadController>(); if (enemy) { enemy.CallEngage(gameObject); } } }