void generateTriggerObject(int count) { for (int i = 0; i < count; i++) { alreadyGeneratedBulletCount++; GameObject SprayColliderBullet = Instantiate(prafabHolder.SprayColliderBullet, start.transform.position, Quaternion.identity); RegisterBulletListener(SprayColliderBullet); SphereCollider collider = SprayColliderBullet.GetComponent <SphereCollider>(); collider.radius = colliderWidth / 2; collider.isTrigger = isTrigger; float nextAngle = getNextShootAngle(); Vector3 targetPos = GetPositionWithDistanceAndAngle(start, maxDistance, nextAngle); Vector3 direction = start.position - targetPos; SprayColliderBullet.transform.rotation = start.rotation; SprayColliderBullet.transform.LookAt(targetPos); SprayColliderBullet.GetComponent <Rigidbody>().AddForce(-direction * fireSpeed * 10); DistanceDestroy distanceDestroy = SprayColliderBullet.GetComponent <DistanceDestroy>(); distanceDestroy.destroyDistance = maxDistance; distanceDestroy.dynamicPosition = start; } }
public GameObject CreateOrbBullet(GameObject orbBulletObj, Transform start, GameObject owner, Vector3 targetPos, Transform target, float damageModifier = 1f) { OrbController orbController = orbBulletObj.GetComponent <OrbController>(); DistanceDestroy distanceDestroy = orbBulletObj.GetComponent <DistanceDestroy>(); SphereCollider bulletCollider = orbBulletObj.AddComponent <SphereCollider>(); OrbBullet bullet = orbBulletObj.AddComponent <OrbBullet>(); Rigidbody rigidbody = orbBulletObj.AddComponent <Rigidbody>(); OrbSkill skill = orbController.skill; Role ownerRole = owner.GetComponent <Role>(); ownerRole.GetSkillByName(skill.skillName).StartCD(); gizmosShootPoint = orbBulletObj.transform.position; Vector3 scale = start.localScale; orbBulletObj.transform.position = start.position; orbBulletObj.transform.rotation = start.rotation; orbBulletObj.transform.LookAt(target); orbBulletObj.transform.localScale = scale; gizmosShootPoint = orbBulletObj.transform.position; distanceDestroy.fixPosition = start.position; float raduis; bulletColliderRadius.TryGetValue(BulletSize.Mega, out raduis); bulletCollider.radius = raduis; bulletCollider.enabled = true; rigidbody.mass = 2; rigidbody.useGravity = false; rigidbody.constraints = RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ | RigidbodyConstraints.FreezeRotationX; bullet.orbSkill = skill; bullet.bulletSpeed = normalizeAttackSpeed(ownerRole.attribute.attackSpeed); bullet.creator = owner; bullet.damageModifier = damageModifier; bullet.direction = start.position - targetPos; GameObject bulletprojectile = Instantiate(skill.bulletPrafab); bulletprojectile.transform.SetParent(orbBulletObj.transform, false); GameObject bulletImpactPrafab = skill.bulletImpactPrafab; bullet.impectPrafab = bulletImpactPrafab; bullet.autoDestroyTime = 10; bullet.enhancement = GetBulletEnhancement(); bullet.EnhancementMerge(); bullet.PreEnhancementProcess(); bullet.ApplyForce(); orbController.caster = owner.GetComponent <Role>(); orbController.OrbAttackStart(); return(orbBulletObj); }