Aktuální projekt

Surface input

Živý assetový Raycast přiřaďte jednou, nebo každý snímek předávejte čerstvý celý výsledek jolt_raycast. Nikdy nepředávejte boolean .hit. Úspěšný dotaz obsahuje ray:{world,origin,target}, i když mine fyziku. Režim výsledku použije první překážku bez druhého fyzikálního dotazu; assetový paprsek sleduje vlastníka a dotazuje se při aktualizaci dotyku.

Příklad#

GML
var hit = jolt_raycast(x1, y1, z1, x2, y2, z2);
if (display.set_touch_raycast(hit)) {
    display.update_touch(mouse_check_button(mb_left));
    if (display.is_touch_pressed()) {
        var pixel = display.get_touch_position();
        show_debug_message(pixel);
    }
}

Použití a omezení#

Předávejte stav držení, nikoli hranu stisku. update_touch vrací úspěch aktualizace; zásah hlásí is_touch_hovered. pressed/down/released/cancelled popisují zachycený stisk. get_touch_position vrací pixely, get_touch_uv normalizované souřadnice při hover. Skrytí, odpojení nebo zničení stisk zruší. Nedostupný vstup výslovně odpojte přes set_touch_raycast(undefined).

Více displejům předejte tentýž objekt výsledku a volejte update_touch jednou pro sdílený paprsek, pak čtěte všechny stavy. Vyhraje nejbližší viditelný obdélník obrácený +Z k paprsku. Bližší fyzikální zásah jej blokuje; vlastní těleso se automaticky neignoruje. Fyzikální miss může zasáhnout displej bez kolize. Jde o souřadnice a stavy, nikoli hotové UI widgety.

Přehled API#

Signatury veřejných funkcí a metod. Metody volejte na vrácené instanci; parametry s výchozí hodnotou jsou volitelné.

Související návody#

Ověřené kontrakty operací#

Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.

Symbol / vlastníkSignaturaKontrakt operace
JoltRenderSurface.get_touch_positionJoltRenderSurface.get_touch_position()Kopie {u, v}0..1 nebo {x, y}v pixelech aktuálního rozlišení, origin vlevo nahoře; undefined bez platného touch bodu.
JoltRenderSurface.get_touch_uvJoltRenderSurface.get_touch_uv()Kopie {u, v}0..1 nebo {x, y}v pixelech aktuálního rozlišení, origin vlevo nahoře; undefined bez platného touch bodu.
JoltRenderSurface.is_touch_cancelledJoltRenderSurface.is_touch_cancelled()Boolean stavu poslední touch aktualizace; pressed/released jsou hrany, cancelled značí ztrátu capture. Neplatný/skrytý owner či zdroj zruší capture i při čtení.
JoltRenderSurface.is_touch_downJoltRenderSurface.is_touch_down()Boolean stavu poslední touch aktualizace; pressed/released jsou hrany, cancelled značí ztrátu capture. Neplatný/skrytý owner či zdroj zruší capture i při čtení.
JoltRenderSurface.is_touch_hoveredJoltRenderSurface.is_touch_hovered()Boolean stavu poslední touch aktualizace; pressed/released jsou hrany, cancelled značí ztrátu capture. Neplatný/skrytý owner či zdroj zruší capture i při čtení.
JoltRenderSurface.is_touch_pressedJoltRenderSurface.is_touch_pressed()Boolean stavu poslední touch aktualizace; pressed/released jsou hrany, cancelled značí ztrátu capture. Neplatný/skrytý owner či zdroj zruší capture i při čtení.
JoltRenderSurface.is_touch_releasedJoltRenderSurface.is_touch_released()Boolean stavu poslední touch aktualizace; pressed/released jsou hrany, cancelled značí ztrátu capture. Neplatný/skrytý owner či zdroj zruší capture i při čtení.
JoltRenderSurface.set_touch_raycastJoltRenderSurface.set_touch_raycast(ray)Authored AssetRaycast nebo čerstvý kompletní jolt_raycast výsledek s ray metadaty, undefined odpojí. Boolean; nepředávej pouze .hit. Jeden zdroj může sdílet více ploch.
JoltRenderSurface.update_touchJoltRenderSurface.update_touch(down)Boolean down/0/1 held stav → Boolean. Jednou na zdroj po aktualizaci transformů; aktualizuje všechny sdílející plochy, testuje čelní +Z a překážky. Gettery už raycast neprovádí.
SurfaceRaycastResult.castSurfaceRaycastResult.cast()Adaptér snapshotu pro touch, ne nový fyzikální dotaz. is_valid ověří svět; get_ray uložený vzorek/undefined, cast pouze {hit, distance} ze vzorku. Obnovuj vstup novým výsledkem raycastu.
SurfaceRaycastResult.get_raySurfaceRaycastResult.get_ray()Adaptér snapshotu pro touch, ne nový fyzikální dotaz. is_valid ověří svět; get_ray uložený vzorek/undefined, cast pouze {hit, distance} ze vzorku. Obnovuj vstup novým výsledkem raycastu.
SurfaceRaycastResult.is_validSurfaceRaycastResult.is_valid()Adaptér snapshotu pro touch, ne nový fyzikální dotaz. is_valid ověří svět; get_ray uložený vzorek/undefined, cast pouze {hit, distance} ze vzorku. Obnovuj vstup novým výsledkem raycastu.