スクリプト/三角形を描画する関数(履歴ID:646)
最終投稿者:
cfm_
更新:2016/02/04 08:44:02
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