Beispiel #1
0
    protected virtual void CreateProjectile()
    {
        //Create basic projectile
        GameObject newBullet;

        if (projectileData.hitscan)
        {
            newBullet = Instantiate(hitscanProjectilePrefab, projectileStartPos.position, Quaternion.identity);
        }
        else
        {
            newBullet = Instantiate(physicalProjectilePrefab, projectileStartPos.position, Quaternion.identity);
        }
        ProjectileBase projectile = newBullet.GetComponent <ProjectileBase>();

        //Set general properties
        projectile.SetDirection(TrigUtilities.DegreesToVector(owner.GetPlayerMovement().GetPlayerAngle() + Random.Range(-accuracyDegreeOffsetRange, accuracyDegreeOffsetRange)));
        projectile.SetDamage(projectileData.damage);
        projectile.SetDamageForce(projectileData.damageForce);
        projectile.SetOwner(owner);
        projectile.SetCanHitOwner(projectileData.canHitOwner);
        projectile.SetColor(owner.GetColor().GetModifiedBrightness(3f));
        projectile.SetBounces(projectileData.bounces);
        projectile.SetCauseExplosion(projectileData.causeExplosion);
        projectile.SetExplosionRadius(projectileData.explosionRadius);
        projectile.SetExplodeEveryBounce(projectileData.explodeEveryBounce);

        //Set properties depending on if it's hitscan or physical
        if (projectileData.hitscan)
        {
            SetHitscanProperties(newBullet);
        }
        else
        {
            SetPhysicalProperties(newBullet);
        }
    }