Objektit : komennot

PIXELPICK


   KUVAUS

Objekti suorittaa poiminnan. Poimintaviiva lähtee suoraan objektin osoittamaan suuntaan, ja CoolBasic tarkastaa mihin se osuu. Ero ObjectPickiin on se, että poiminta suoritetaan objektin sisältä. Komento on suunniteltu kuvaan perustuvaan kenttään. Ainahan ei ole pakko käyttää tilekarttaa : )

Komennon ihanteellinen käyttötarkoitus on ns. instant hit bullets, eli luodin osuma. Luoti liikkuu äärettömän nopeasti, ja osuu ensimmäiseen seinään. Kaikki "poimittavat" objektit pitää esitellä komennolla ObjectPickable arvolle 3.

Huomaa, että piilotettuja objekteja ei voi poimia. Voit käyttää komentoa vaikkapa luolalenteltyihin, jossa kenttä ladataan objektina (ilman pyöritysarvoa), ja jonka sisällä alukset lentelevät.

Valinnaisella täydellisyysarvolla määritetään poiminnan tarkkuus. Suuremmat arvot toimivat nopeammin suurilla etäisyyksillä. Oletuksena 1, joka on tarkin mahdollinen poiminta.

   KÄYTTÖ
PIXELPICK objektimuuttuja, [täydellisyys]

  • objektimuuttuja = Se muuttuja, mihin objekti ladattiin tai luotiin
  • täydellisyys (valinnainen) = Kokonaisluku 1 ->. Poiminnan tarkkuus/nopeus. Oletuksena 1 (tarkin)

  • Katso myös: OBJECTPICKABLE, OBJECTPICK, CAMERAPICK, PICKEDOBJECT, PICKEDX, PICKEDY

       ESIMERKKI
    Const gravity= -0.02

    'declare variables as decimal
    Dim target_movex As Float, target_movey As Float
    Dim movex As Float, movey As Float

    'change the display mode (low reolution, zoomed display)
    SCREEN 320,240,16,cbsizable
    SetWindow "",3
    DrawToWorld ON

    'load the image-map (NO rotation detail)
    map=LoadObject("Media\level.bmp")
    ObjectPickable map,3

    'load the ship
    ship=LoadObject("Media\ship.bmp",72)

    Repeat

        oldx#=ObjectX(ship) 'memorize the old coordinates
        oldy#=ObjectY(ship)

        'turn the ship
        If LeftKey() Then TurnObject ship,5
        If RightKey() Then TurnObject ship, -5
        
        'thrust/update physics
        If UpKey() Then
            target_movex=Cos(ObjectAngle(ship))*3
            target_movey=Sin(ObjectAngle(ship))*3
            
            If target_movex< movex Then movex=movex-0.05
            If target_movex> movex Then movex=movex+0.05
            If target_movey< movey Then movey=movey-0.05
            If target_movey> movey Then movey=movey+0.05
        EndIf
        
        'move the ship according to physics
        movey=movey+gravity
        If movey< -4 Then movey= -4
        TranslateObject ship,movex,movey

        'make the camera follow the ship
        CloneCameraPosition ship
        
        'COLLISION FOR THE LEVEL
        CameraPick 160,120
        If PickedObject()=map Then
            PositionObject ship,oldx,oldy
            movey=0
        EndIf
        
        DrawGame 'for drawing
        
        'figure out where the pick intersects with the level
        PixelPick ship
        If PickedObject() Then
            Circle PickedX() -5,PickedY()+5,10
        EndIf

        DrawScreen

    Forever

    <<TAKAISIN