スクリプト/三角形を描画する関数(履歴ID:646)
最終投稿者: cfm_
更新:2016/02/04 08:44:02
16/02/04 大幅改良。精度・画質が大幅に上がりました。同時にサンプルゲームを更新。
使うには、これらから使いたい画像をクリップして、引数のimgに画像IDを入れてください。
【一枚絵】草ポリゴン2
【一枚絵】土ポリゴン2
他の絵を使いたい方は、これを使って画像編集ソフトで作ってください。
gimpの場合の作り方が画像ページに書いてあります。
【一枚絵】三角画像のマスク
この関数のサンプルゲーム
ゲームのスクリプト
使うには、これらから使いたい画像をクリップして、引数のimgに画像IDを入れてください。
【一枚絵】草ポリゴン2
【一枚絵】土ポリゴン2
他の絵を使いたい方は、これを使って画像編集ソフトで作ってください。
gimpの場合の作り方が画像ページに書いてあります。
【一枚絵】三角画像のマスク
#3点を結ぶ三角形を描画(画像, Zオーダー, 頂点の座標・・・) def draw_triangle(img,z,x1,y1,x2,y2,x3,y3) e1=x1-x2 e2=y1-y2 lensqr12=e1*e1+e2*e2 e1=x2-x3 e2=y2-y3 lensqr23=e1*e1+e2*e2 e1=x3-x1 e2=y3-y1 if lensqr12>lensqr23 if lensqr12>e1*e1+e2*e2 ax=x1 ay=y1 bx=x2 by=y2 b2x=bx-ax b2y=by-ay c2x=x3-ax c2y=y3-ay else ax=x3 ay=y3 bx=x1 by=y1 b2x=bx-ax b2y=by-ay c2x=x2-ax c2y=y2-ay end else if lensqr23>e1*e1+e2*e2 ax=x2 ay=y2 bx=x3 by=y3 b2x=bx-ax b2y=by-ay c2x=x1-ax c2y=y1-ay else ax=x3 ay=y3 bx=x1 by=y1 b2x=bx-ax b2y=by-ay c2x=x2-ax c2y=y2-ay end end r=atan2(b2y,b2x) s = sin(-r) c = cos(-r) b3x = b2x * c - b2y * s c3x = c2x * c - c2y * s c3y = c2x * s + c2y * c i=createSprite(img) xx=floor((c3x/b3x)*69) if xx<35 setSpriteScale(i, b3x/70, c3y/70) setSpritePosition(i, ax, ay) else xx=69-xx setSpriteScale(i, -b3x/70, c3y/70) setSpritePosition(i, bx, by) end setSpriteRect(i, (xx%7)*70, floor(xx/7)*70, 69.5, 69.5, 0, 0, 69.5, 69.5) setSpriteRotation(i, r) setSpriteZOrder(i, z) end
この関数のサンプルゲーム
ゲームのスクリプト
setCanvasVisible(true) startInput() pnt=createArray() n=0 while true while hasInput() takeInput() if isMouseDown() pos=getMousePosition() pnt[n]=pos[0] pnt[n+1]=pos[1] n=n+2 if n==6 draw_triangle(301131,7,pnt[0],pnt[1],pnt[2],pnt[3],pnt[4],pnt[5]) drawCanvas() n=0 end elsif isKeyDown("ENTER") goEnding() end end end