示例#1
0
    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;
        }
    }
示例#2
0
    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);
    }