示例#1
0
    public void shootProjectile(IntVec2 this_pos, Projectile.ProjectileType pt, IntVec2 targetTile, float velocity, float range, float accmod, bool allied)
    {
        Gun.FiredProjectile fp;
        fp.accuracy_modifier_degree = 0;
        fp.is_crit    = false;
        fp.projectile = pt;
        fp.range      = range;
        fp.speed      = velocity;

        gr.AddBullet(fp, accmod + (Mathf.Rad2Deg * Mathf.Atan2(targetTile.y - this_pos.y, targetTile.x - this_pos.x)), new Vector2(this_pos.x, this_pos.y), allied);
    }
示例#2
0
 public GameObject GetPooledProjectile(Projectile.ProjectileType type)
 {
     foreach (ProjectilePoolItem pool in ProjectilePools)
     {
         if (pool.Type == type)
         {
             return(pool.GetPooledObject());
         }
     }
     return(null);
 }
示例#3
0
        public ProjectilePool GetPool(Projectile.ProjectileType projectileType)
        {
            ProjectilePool result = null;

            foreach (var projectilePool in _projectilePools)
            {
                if (projectilePool.ProjectileType == projectileType)
                {
                    result = projectilePool;
                    break;
                }
            }

            return(result);
        }
示例#4
0
    // fonction qui permet d'instancier un effet visuel selon le type passé en paramètre
    public GameObject CreateFX(Projectile.ProjectileType type)
    {
        switch (type)
        {
        case Projectile.ProjectileType.PROJECTILE_GUN:

            goFX = Duplicate(originalImpactGun);
            goFX.transform.position = originalImpactGun.transform.position;

            print("<factory create fx: gun>");

            break;

        case Projectile.ProjectileType.PROJECTILE_CANNON:

            goFX = Duplicate(originalImpactCannon);
            goFX.transform.position = originalImpactCannon.transform.position;

            print("<factory create fx: cannon>");

            break;

        case Projectile.ProjectileType.PROJECTILE_LASER:

            goFX = Duplicate(originalImpactLaser);
            goFX.transform.position = originalImpactLaser.transform.position;

            print("<factory create fx: laser>");

            break;

        case Projectile.ProjectileType.PROJECTILE_FLAME:

            goFX = Duplicate(originalImpactFlame);
            goFX.transform.position = originalImpactFlame.transform.position;

            print("<factory create fx: flame>");

            break;
        }

        return(goFX);
    }
示例#5
0
    // fonction qui permet d'instancier un projectile selon le type passé en paramètre
    public GameObject CreateProjectile(Projectile.ProjectileType type)
    {
        switch (type)
        {
        case Projectile.ProjectileType.PROJECTILE_GUN:

            goProjectile = Duplicate(originalProjectileGun);
            goProjectile.transform.position = originalProjectileGun.transform.position;

            print("<factory create projectile: gun>");

            break;

        case Projectile.ProjectileType.PROJECTILE_CANNON:

            goProjectile = Duplicate(originalProjectileCannon);
            goProjectile.transform.position = originalProjectileCannon.transform.position;

            print("<factory create projectile: cannon>");

            break;

        case Projectile.ProjectileType.PROJECTILE_LASER:

            goProjectile = Duplicate(originalProjectileLaser);
            goProjectile.transform.position = originalProjectileLaser.transform.position;

            print("<factory create projectile: laser>");

            break;

        case Projectile.ProjectileType.PROJECTILE_FLAME:

            goProjectile = Duplicate(originalProjectileFlame);
            goProjectile.transform.position = originalProjectileFlame.transform.position;

            print("<factory create projectile: flame>");

            break;
        }

        return(goProjectile);
    }
        // Fires a projectile toward the cursor position
        public void Attack(PhysicsManager physManager, Vector2 cursorPos, Projectile.ProjectileType projectileType)
        {
            Vector2 directionToFire = new Vector2(cursorPos.X - RigidBody.Position.X, cursorPos.Y - RigidBody.Position.Y);
            directionToFire = Vector2.Normalize(directionToFire);

            if (projectileType == Projectile.ProjectileType.Bullet)
            {
                Projectile projectile = new Projectile(RigidBody.Position, directionToFire, 1, projectileType);
                physManager.DynamicObjects.Add(projectile);
                physManager.AllPhysObjects.Add(projectile);
            }

            if (projectileType == Projectile.ProjectileType.Ball && BallAmmo > 0)
            {
                Projectile projectile = new Projectile(RigidBody.Position, directionToFire, 1, projectileType);
                physManager.DynamicObjects.Add(projectile);
                physManager.AllPhysObjects.Add(projectile);
                BallAmmo--;
            }
        }
示例#7
0
 public void setExplosionType(Projectile.ProjectileType newProjectileType)
 {
     projectileType = newProjectileType;
 }