W całości w 2d. Głowa i tułów jest ręcznie rysowana w 6 kierunkach, ale reszta transformowana lengthdirami.
Podstawa to napisanie prostego jednolinijkowego skryptu na rozciąganie sprajta między dwoma punktami:
///drawSpritePoints(spr,sub,xx1,yy1,xx2,yy2,xscale,yscale)
//draws sprite stretched between two points
spr=argument0
sub=argument1
xx1=argument2
yy1=argument3
xx2=argument4
yy2=argument5
xscale=argument6
yscale=argument7
draw_sprite_ext(spr,sub,xx1,yy1,xscale*point_distance(xx1,yy1,xx2,yy2)/sprite_get_width(spr),yscale*1,point_direction(xx1,yy1,xx2,yy2),c_white,image_alpha)
Następnie używamy go do rysowania danej części, np. przedramienia:
///drawArmR()
//drawing right arm
drawSpritePoints(arm_s,0,r_elbow_x,r_elbow_y,r_hand_x,r_hand_y,1,-1)
gdzie r_elbow_x i y to współrzędne punktu prawego ramienia, a r_hand_x i y to współrzędne punktu prawej dłoni.
Te punkty określamy za pomocą lengthdirów na podstawie obrotu gracza (zmienna rot)
przykład:
r_hand_x=x-lengthdir_x(r_hand_off_x,rot+90)-lengthdir_x(r_hand_off_y,rot+180)
r_hand_y=y-lengthdir_y(r_hand_off_x*elipse_s,rot+90)-lengthdir_y(r_hand_off_y*elipse_s,rot+180)-r_hand_off_z
Dłoń jest rysowana z przesunięciem r_hand_off_y w trójwymiarowym kierunku Y (zgodnym z rotacją rot), r_hand_off_x w trójwymiarowym kierunku X (rot+90), natomiast w trójwymiarowym kierunku Z z przesunięciem r_hand_off_z.
Jak widać na obrazku, kierunki X i Y są zależne od obrotu i używamy ich przekształcenia lenghtdirów i odejmujemy te lenghtdiry od dwuwymiarowych współrzędnych x i y , natomiast kierunek Z po prostu odejmujemy od dwuwymiarowej współrzędnej y ręki bez żadnych przekształceń.