IEnumerator FireAttackAsync() { yield return(new WaitForSeconds(0.15f)); GameObject obj = Instantiate(BulletHellPrefab, gameObject.transform.position + new Vector3(0, 1f, 0), new Quaternion()); DragonBulletHell pbh = obj.GetComponent <DragonBulletHell>(); obj.transform.localScale = new Vector3(2f, 2f, 2f); obj.transform.rotation = transform.rotation; obj.transform.Translate(Vector3.forward * 1); pbh.speed = 16f; Damage dmg = new Damage(0f, 0f, true, false, false); pbh.dmg = stats.RealDamage(dmg); pbh.ttl = 5f; Damage dmgChild = new Damage(0f, Random.Range(25f * Level, 50f * Level), true, false, true); pbh.childDamage = stats.RealDamage(dmgChild); yield return(new WaitForSeconds(0.2f)); if (targetRandomly) { targetRot = Quaternion.Euler(0, Random.Range(0, 360), 0); } }
void MeleeAttack() { Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false); dmg = stats.RealDamage(dmg); GameObject remy = GameObject.Find("remy"); StatBlock enemy = remy.GetComponent <StatBlock>(); if (enemy != null) { enemy.TakeDamage(dmg, remy); } }
protected override void Activate() { GameObject obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0f, 2f, 0f), new Quaternion()); HorizontalSwipe pbh = obj.GetComponent <HorizontalSwipe>(); obj.transform.LookAt(mpd.CalculateWorldPosition()); var lookPos = mpd.CalculateWorldPosition() - transform.position; lookPos.y = 0; var rotation = Quaternion.LookRotation(lookPos); obj.transform.localScale = new Vector3(5f, 5f, 5f); pbh.speed = projSpeed; Damage dmg = new Damage(0f, Random.Range(dmgMin, dmgMax), false, false, true); pbh.dmg = stats.RealDamage(dmg); TimedBuff tb = slowdown.Instance; Stat stat = tb.Stats.Find(item => item.Name == Stat.MOVE_SPEED_MULT); // Debug.Log("just like the white winged dove : " + stat.Name + stat.Value + slowdownMult); stat = new Stat(stat.Name, StatBlock.CalcMult(stat.Value, slowdownMult)); tb.Stats.Remove(new Stat(Stat.MOVE_SPEED_MULT)); tb.Stats.Add(stat); tb.Duration += slowdownDur; tb.IsUnique = !slowdownStack; pbh.dmg.buffs.Add(tb); pbh.friendly = true; pbh.ttl = 4000f; pbh.player = gameObject; }
IEnumerator FireProjectile() { int currRot = -(int)size; //30 int currCast = 0; while (currCast < projCount) { //needs to file projectile along cone shape GameObject obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0f, 2f, 0f), new Quaternion()); var lookPos = mpd.CalculateWorldPosition() - transform.position; lookPos.y = 0; var rotation = Quaternion.LookRotation(lookPos); ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>(); obj.transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 1f); obj.transform.Rotate(new Vector3(Random.Range(0, 10), currRot, 0)); currRot += (int)((2 * size) / projCount); obj.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f); pbh.speed = 15f; Damage dmg = new Damage(0f, 0.45f * Random.Range(dmgMin, dmgMax), true, false, false); pbh.dmg = stats.RealDamage(dmg); pbh.ttl = 2f; pbh.friendly = true; ++currCast; } yield return(null); }
void AttackPlayer() { // Old code - to be removed... // GameObject o = GameObject.CreatePrimitive(PrimitiveType.Sphere); // o.transform.position = transform.position; // o.GetComponent<Renderer>().material.SetColor("_Color", Color.red); // o.transform.LookAt(target.transform); // o.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f); // o.transform.parent = transform; // Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false); // dmg = stats.RealDamage(dmg); // ProjectileController pb = o.AddComponent<ProjectileController>(); // pb.dmg = dmg; // pb.speed = 10f; // pb.ttl = 5f; // o.GetComponent<SphereCollider>().isTrigger = true; // Rigidbody rb = o.AddComponent<Rigidbody>(); // rb.useGravity = false; // rb.isKinematic = true; // Generates projectiles var projectileInstance = Instantiate(projectile, transform.position, transform.rotation); ProjectileMover pm = projectileInstance.GetComponent <ProjectileMover>(); projectileInstance.GetComponent <SphereCollider>().isTrigger = true; projectileInstance.transform.parent = transform; Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false); dmg = stats.RealDamage(dmg); pm.dmg = dmg; }
public void ProjectileAttack(GameObject projectile, float ttl, float height = 0f) { // Generate a projectile instance and get its behave script GameObject projectileInstance = Instantiate(projectile, transform.position + new Vector3(0f, height, 0f), transform.rotation); ProjectileBehave projectileBehave = projectileInstance.GetComponent <ProjectileBehave>(); projectileBehave.ttl = ttl; var lookPos = target.transform.position - transform.position; lookPos.y = 0; var rotation = Quaternion.LookRotation(lookPos); projectileInstance.transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 1f); // Cause damage Damage dmg = new Damage(Random.Range(dmgMin, dmgMax), 0f, false, true, false); projectileBehave.dmg = statBlock.RealDamage(dmg); }
void FireProjectile() { GameObject obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0, 2f, 0), new Quaternion()); var lookPos = mpd.CalculateWorldPosition() - transform.position; lookPos.y = 0; var rotation = Quaternion.LookRotation(lookPos); ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>(); obj.transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 1f); obj.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f); pbh.speed = projSpeed; Damage dmg = new Damage(0f, Random.Range(dmgMin, dmgMax), true, false, false); pbh.dmg = stats.RealDamage(dmg); pbh.ttl = 2f; pbh.friendly = true; }
IEnumerator FireProjectile() { Vector3 posMod = Vector3.zero; int rotMod = 0; int tempCount = 1; int currCount = 0; while (currCount < projCount) { GameObject obj = Instantiate(projectile, mpd.CalculateWorldPosition() + new Vector3(0, 6, 0), new Quaternion()); //at mouse position, 6m up. ProjectileBehave phb = obj.GetComponent <ProjectileBehave>(); obj.transform.Rotate(90, rotMod, 0); //rotate around pivot obj.transform.Translate(posMod); //adjust forward obj.transform.localScale = new Vector3(2f, 2f, 2f); currCount++; rotMod = rotMod + (360 / tempCount); if (currCount == 1) { posMod = new Vector3(2, 0, 0); if (projCount != 7) { tempCount = (int)((projCount - 1) / 3); } else { tempCount = 6; } } else if (currCount == ((projCount - 1) / 3) + 1 && projCount != 7) { posMod = new Vector3(4, 0, 0); tempCount = (int)(projCount - 1) - tempCount; rotMod = 0; } phb.friendly = true; phb.speed = 15; Damage dmg = new Damage(0f, Random.Range(dmgMin, dmgMax), true, false, false); phb.dmg = stats.RealDamage(dmg); phb.ttl = 2f; } yield return(null); }
void AttackPlayer() { GameObject o = GameObject.CreatePrimitive(PrimitiveType.Sphere); o.transform.position = transform.position; o.transform.LookAt(target.transform); o.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f); Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false); dmg = stats.RealDamage(dmg); ProjectileBehave pb = o.AddComponent <ProjectileBehave>(); pb.dmg = dmg; pb.speed = 5f; pb.ttl = 5f; o.GetComponent <SphereCollider>().isTrigger = true; Rigidbody rb = o.AddComponent <Rigidbody>(); rb.isKinematic = true; }
void FireProjectile() { GameObject obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0, 2f, 0), new Quaternion()); ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>(); //obj.transform.LookAt(mpd.CalculateWorldPosition()); var lookPos = mpd.CalculateWorldPosition() - transform.position; lookPos.y = 0; var rotation = Quaternion.LookRotation(lookPos); obj.transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 1f); obj.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f); obj.transform.Rotate(Vector3.up * 90 * Random.Range(-projSpread, projSpread), Space.World); pbh.speed = projSpeed; Damage dmg = new Damage(0f, Random.Range(dmgMin, dmgMax), false, false, true); //Debug.Log("Magic Dmg: " + dmg.magicDmgReal); pbh.dmg = stats.RealDamage(dmg); //Debug.Log("Real Magic Dmg: " + pbh.dmg.magicDmgReal); pbh.friendly = true; pbh.ttl = 2f; }