示例#1
0
    public Bullet Spawn(SpawnParams spawnParams)
    {
        if (bulletPool == null)
        {
            Debug.LogError("BulletPool list null. Construction probably failed.");
            return(null);
        }

        GameObject result = null;

        foreach (BulletPoolItem item in bulletPool)
        {
            if (!item.itemOwner.activeSelf)
            {
                result = item.itemOwner;
                break;
            }
        }
        if (!result)
        {
            return(null);
        }

        result.SetActive(true);
        result.transform.position = spawnParams.spawnPoint;
        result.transform.rotation = spawnParams.rotation;

        return(result.GetComponent <Bullet>());
    }
示例#2
0
        /// <summary>
        /// Attaches a particle emitter object to a specific entity slot and loads it with <paramref name="particleEffect"/>.
        /// </summary>
        /// <param name="slot">The slot to load the particle in.</param>
        /// <param name="particleEffect">Particle effect to load.</param>
        /// <param name="scale">Scale of the emitter.</param>
        public void LoadParticleEmitter(int slot, ParticleEffect particleEffect, float scale = 1.0f)
        {
            var sp = new SpawnParams {
                fSizeScale = scale
            };

            NativeHandle.LoadParticleEmitter(slot, particleEffect.NativeHandle, sp, false, false);
        }
示例#3
0
        /// <summary>
        /// Attaches a particle emitter object to a specific entity slot.
        /// </summary>
        /// <param name="slot">Slot.</param>
        /// <param name="emitter">Emitter.</param>
        /// <param name="scale">Scale.</param>
        public void LoadParticleEmitter(int slot, IParticleEffect emitter, float scale = 1.0f)
        {
            var sp = new SpawnParams {
                fSizeScale = scale
            };

            BaseEntity.LoadParticleEmitter(slot, emitter, sp, false, false);
        }
示例#4
0
    void Spawn(SpawnParams arg)
    {
        var     position      = Quaternion.Euler(0, 0, Random.Range(arg.AngleFrom, arg.AngleTo)) * Vector2.up * SpawnDistance;
        var     initialForce  = Random.Range(arg.MinForce, arg.MaxForce);
        var     towardsPlanet = (-position).normalized;
        var     zRotation     = Random.Range(arg.MinAngleTrajDeg, arg.MaxAngleTrajDeg) * (Random.Range(-1, 1) < 0 ? -1 : 1);
        Vector2 v             = Quaternion.Euler(0, 0, zRotation) * towardsPlanet * initialForce;


        var asteroid = Instantiate(asteroidPrefab, this.transform);

        asteroid.Initialize(
            position: position,
            forceVector: v,
            gravitySource: new Vector2(0, 0),
            gravityForceMag: arg.GravityForceMag,
            isIdle: idleMode,
            sfxPlayer: sfxPlayer);
    }
示例#5
0
        public virtual BaseActor SpawnTrigger(SpawnParams spawnParam)
        {
            BaseActor actor = m_ActorService.AddActor(spawnParam.ActorType);

            //TransformComponent transform = actor.AddComponent<TransformComponent>(spawnParam.InitPos.HasValue ? spawnParam.InitPos.Value : Vector3.Zero,
            //                                                                      spawnParam.InitRot.HasValue ? spawnParam.InitRot.Value : Quaternion.Identity, spawnParam.InitScale.HasValue ? spawnParam.InitScale.Value : Vector3.One);
            actor.AddComponent(spawnParam.AttributeComponent, spawnParam.AttributeKey);
            TriggerComponent trigger = actor.AddComponent <TriggerComponent>();

            trigger.Owner = spawnParam.Owner;

            MovementSystem movementSysten = m_ActorService.GetComponentSystem <MovementSystem>();

            movementSysten.Transform(actor, spawnParam.InitPos, spawnParam.InitRot, spawnParam.InitScale);



            return(actor);
        }
示例#6
0
    public void Fire()
    {
        if (!CanFire())
        {
            return;
        }

        SpawnParams spawnParams = new SpawnParams();

        spawnParams.rotation   = Quaternion.identity;
        spawnParams.spawnPoint = spawnPointOwner.transform.position;

        Bullet bullet = bulletPool.Spawn(spawnParams);

        if (!bullet)
        {
            return;
        }

        bullet.Velocity          = (spawnPointOwner.transform.position - transform.position).normalized * bulletVelocity;
        timeSinceLastFireSeconds = 0.0f;
    }
示例#7
0
    public Enemy Spawn(SpawnParams spawnParams)
    {
        if (enemyPool == null)
        {
            Debug.LogError("Enemy pool null. Construction probably failed.");
            return(null);
        }

        if (!CanSpawn())
        {
            return(null);
        }

        GameObject result = null;

        foreach (GameObject obj in enemyPool)
        {
            if (!obj.activeSelf)
            {
                result = obj;
                break;
            }
        }

        if (!result)
        {
            return(null);
        }

        result.SetActive(true);
        result.transform.position = spawnParams.spawnPoint;
        result.transform.rotation = spawnParams.rotation;

        lastEnemySpawnedTimeSeconds = 0.0f;
        enemiesSpawned++;

        return(result.GetComponent <Enemy>());
    }
 internal SpawnParameters(SpawnParams nativeHandle)
 {
     NativeHandle = nativeHandle;
 }
示例#9
0
 private void SetNextSpawnParams()
 {
     nextSpawnParams            = new SpawnParams();
     nextSpawnParams.spawnPoint = GetNextSpawnParamsPosition();
     nextSpawnParams.rotation   = Quaternion.identity;
 }