Blitz3D+ Command Reference

PickedY# ( )

Parameters

None.

Description

Returns the world y coordinate of the point hit by the most recent pick.

A pick command - CameraPick, EntityPick or LinePick - fires a ray into the world, and PickedX, PickedY and PickedZ give the exact spot where that ray struck something pickable. Typical uses: standing a marker on the terrain under the mouse, or checking how high on a wall a grappling hook caught.

Only read these values after a successful pick: if the last pick missed (returned 0), the Picked commands keep whatever an earlier successful pick left in them. Remember too that only entities given a pick mode with EntityPickMode can be hit at all.

See also: PickedX, PickedZ, PickedNY, PickedEntity, CameraPick.

Example

; PickedY Example
; ---------------

Graphics3D 640,480,0,2
SetBuffer BackBuffer()

camera=CreateCamera()
PositionEntity camera,0,3,-8

light=CreateLight()
RotateEntity light,45,45,0

; Shooting-gallery floor - EntityPickMode 2 makes it pickable by its polygons
floor=CreatePlane()
EntityColor floor,70,110,70
EntityPickMode floor,2

; Three targets, all pickable by their polygons
cube=CreateCube()
PositionEntity cube,-3,1,4
EntityPickMode cube,2

ball=CreateSphere()
PositionEntity ball,0,1.4,4
EntityPickMode ball,2

drum=CreateCylinder()
PositionEntity drum,3,1,4
EntityPickMode drum,2

; Small marker sphere shows the exact pick point
marker=CreateSphere()
ScaleEntity marker,0.15,0.15,0.15
EntityColor marker,255,255,0
HideEntity marker

bob#=0

While Not KeyDown(1)

    ; Repaint the targets; the picked one is flashed white below
    EntityColor cube,200,180,60
    EntityColor ball,60,120,220
    EntityColor drum,220,80,60

    ; The ball bobs gently so the gallery feels alive
    bob=bob+2
    PositionEntity ball,0,1.4+0.4*Sin(bob),4

    ; Click to shoot - CameraPick casts a pick ray through the mouse cursor
    If MouseHit(1) Then CameraPick(camera,MouseX(),MouseY())

    ; Highlight the last picked entity and park the marker on the pick point
    hit=PickedEntity()
    If hit<>0
        If hit<>floor Then EntityColor hit,255,255,255
        ShowEntity marker
        PositionEntity marker,PickedX(),PickedY(),PickedZ()
    Else
        HideEntity marker
    EndIf

    ; Arrow keys move the camera
    If KeyDown(200) Then MoveEntity camera,0,0,0.1
    If KeyDown(208) Then MoveEntity camera,0,0,-0.1
    If KeyDown(203) Then TurnEntity camera,0,1,0
    If KeyDown(205) Then TurnEntity camera,0,-1,0

    RenderWorld

    ; Crosshair at the mouse position
    Rect MouseX()-6,MouseY(),13,1
    Rect MouseX(),MouseY()-6,1,13

    Text 0,0,"Click a target or the floor to pick it   Arrow keys: move camera   Esc: exit"
    ; PickedY is the world y coordinate of the pick point (the yellow marker)
    Text 0,20,"PickedY: "+PickedY()
    Text 0,40,"(PickedX: "+PickedX()+"   PickedZ: "+PickedZ()+")"
    Text 0,60,"The floor gives 0 - catch the bobbing ball at the top for the biggest PickedY"

    Flip

Wend

End

Index