Пример #1
0
    public static ProjectileBase CreateProjectile(GameObject prefab, Vector3 _spawnPos, Vector3 _euler, Vector3 _targetPos, GameObject _owner)
    {
        ProjectileBase instance = Instantiate <GameObject>(prefab).GetComponent <ProjectileBase>();

        instance.transform.position    = _spawnPos;
        instance.transform.eulerAngles = _euler;
        float s = instance.speed;

        instance.SetTargetPosition(_targetPos, s, s, s);
        instance.SetOwner(_owner);
        return(instance);
    }
Пример #2
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);
        }
    }