Jypeli-ohjeita

Olion pyörittäminen annetun pisteen ympäri

Olkoon kiertopiste se piste, jonka ympäri oliota kierretään. Sitten vähän matikkaa.

PhysicsObject olio = new PhysicsObject(200,20);
Add(olio); olio.IgnoresPhysicsLogics = true;
Vector kiertopiste = olio.Position - new Vector(olio.Width / 2, 0);
Keyboard.ListenWSAD(ButtonState.Down, (v) => {
    olio.Angle += Angle.FromDegrees(v.X);
    double rads = olio.Angle.Radians;
    olio.Position = kiertopiste + olio.Width / 2 * new Vector(Math.Cos(rads), Math.Sin(rads));
}, null);

Olion tietyn osan törmäyksen tarkistus

Tehdään lisäämällä pienempi olio törmättävään kohtaan ja päivittämällä sen paikkaa Updatessa esim:

protected override void Update(Time time)
{
    paa.Position = hahmo.Position + (hahmo.Angle + Angle.FromDegrees(90)).GetVector() * (hahmo.Height / 2);
    base.Update(time);
}

WSAD- ja nuolinäppäinten käyttö nopeasti

ListenWSAD ja ListenArrows palauttavat painetun napin suuntaisen yksikkövektorin.

void LisaaOhjaimet()
{
    Keyboard.ListenArrows(ButtonState.Down, v => pelaaja.Hit(v * 100), "Liiku");
    Keyboard.ListenWSAD(ButtonState.Down, v => pelaaja.Hit(v * 100), "Liiku");
}

Kentän koon kasvattaminen reunoja siirtämällä

Napataan kiinni reunat, jotka CreateBorders palauttaa ja muutetaan niiden paikkaa ja kokoa samalla kertoimella.

foreach (Surface reuna in Level.CreateBorders())
{
    reuna.Size *= 1.5;
    reuna.Position *= 1.5;
}

Tai yksinkertaisesti kasvatetaan kentän kokoa ja luodaan reunat sen jälkeen:

Level.Size *= 1.5; Level.CreateBorders();

Ajastimet nopeasti

Timer t = Timer.CreateAndStart(1, Ajasta);

Kahden olion a ja b overlappauksen tarkistus

        // suorakulmioille
        if (a.Left < b.Right && a.Right > b.Left && a.Bottom < b.Top && a.Top > b.Bottom)
            // on päällekkäistä aluetta
            
        // ympyröille
        if (Vector.Distance(a.Position, b.Position) < a.Width + b.Width)
            // on päällekkäistä aluetta

Objektien raahaus hiirellä

PhysicsObject raahattava; // Väliaikaismuuttuja jossa pidetään tieto että mitä kappaletta raahataan hiirellä
public void LuoRaahattava(Vector pos)
{
    PhysicsObject p = new PhysicsObject(20, 20);
    p.Position = pos;
    Add(p);
    
    // Kuunnellaan hiiren klikkausta kappaleen päällä. 
    // Jos useampi kappale on päällekkäin, niistä viimeisimpänä peliin lisätty on raahauksen kohde
    Mouse.ListenOn(p, MouseButton.Left, ButtonState.Pressed, delegate { if (raahattava == null) raahattava = p; }, null );
    
    // Jokaisella pelin päivityksellä (60 kertaa sekunnissa) asetetaan kappale hiiren sijaintiin pelimaailmassa
    Mouse.Listen(MouseButton.Left, ButtonState.Down, delegate() { if(raahattava != null) raahattava.Position = Mouse.PositionOnWorld; }, null);
    
    // Kun hiiren napista päästetään irti, "unohdetaan" tieto raahauksen kohteesta 
    Mouse.ListenOn(p, MouseButton.Left, ButtonState.Released, delegate { raahattava = null; }, null);
}

Pistettä kohti vetävä painovoima

* 1 määrittää painovoimakkuuden.

protected override void Update(Time time)
{
    foreach (PhysicsObject p in GetObjectsWithTag("putoava"))
        if (p.X != 0 && p.Y != 0) p.Hit(-p.Position * 1);
    base.Update(time);
}

```

Pikseliteksti

Tällä koodilla voi tuottaa esim. 8-bit-tyylisiin peleihin teeman mukaista tekstiä (jos Jypelin default-fontti ei nappaa)

# ajat

Tässä voi testata miltä teksti näyttää.

# teksti

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.