Difference between revisions of "love.graphics.draw (日本語)"

m (Added note.)
m (注意)
Line 52: Line 52:
 
== 注意 ==
 
== 注意 ==
 
紛らわしいですが love.graphics.draw 関数と love.draw コールバック関数を混同しないでください。
 
紛らわしいですが love.graphics.draw 関数と love.draw コールバック関数を混同しないでください。
過去にあった事例 ([https://love2d.org/forums/viewtopic.php?t=8764 Require won't work :s - LÖVE]) ですが、 love.draw 内で love.graphics.draw(...) と書くところを love.draw(...) と書いてしまった方がおります。この場合 love.draw は再帰関数として扱われてしまい、結果としてスタックオーバーフロー (stack overflowed) でエラーになりますので注意してください。
+
 
 +
過去にあった事例 ([https://love2d.org/forums/viewtopic.php?t=8764 Require won't work :s - LÖVE]) ですが、 love.draw 内で love.graphics.draw(...) と書くところを love.draw(...) と書いてしまった方がおります。
 +
 
 +
この場合 love.draw は再帰関数として扱われてしまい、結果としてスタックオーバーフロー (stack overflowed) でエラーになりますので注意してください。
  
 
== 用例 ==
 
== 用例 ==

Revision as of 03:02, 20 October 2017

Drawable オブジェクト(Image, Canvas, SpriteBatch, ParticleSystem, Mesh, または Video) に回転、尺度変更(拡大・縮小)および剪断を選択して画面へ描画します。

オブジェクトはローカル座標系に関連づけられて描画されます。原点の標準位置は Image また Canvas の左上端です。尺度変更、剪断および回転の全ての引数はその点と関連するオブジェクトを変形します。さらに、原点の位置は画面座標系により指定できます。

中心の原点の支距により、その中心に対してオブジェクトを回転させることは可能です。必ず回転角度は弧度を与えてください。尺度変更係数へ負数を使用することで中心線から反転することもできます。

注意として支距は回転、尺度変更、または剪断の前に適用されます。尺度変更および剪断は回転の前に適用されます。

オブジェクトの右と左の端は剪断係数へ角を定義することによりずらすことができます。

関数

概要

love.graphics.draw( drawable, x, y, r, sx, sy, ox, oy, kx, ky )

引数

Drawable drawable
描画可能なオブジェクト。
number x (0)
オブジェクトを描画する座標 (x-軸)。
number y (0)
オブジェクトを描画する座標 (y-軸)。
number r (0)
方向 (弧度)。
number sx (1)
尺度変更係数 (x-軸)。
number sy (sx)
尺度変更係数 (y-軸)。
number ox (0)
原点の支距 (x-軸)。
number oy (0)
原点の支距 (y-軸)。
LÖVE 0.8.0 から利用可能
number kx (0)}
剪断係数 (x-軸)。
number ky (0)
剪断係数 (y-軸)。

返値

ありません。

関数

LÖVE 0.9.0 から使用可能
love.graphics.drawq からの置換。

概要

love.graphics.draw( texture, quad, x, y, r, sx, sy, ox, oy, kx, ky )

引数

Texture texture
Quad へテクスチャとして取り込む Texture または Canvas です。
Quad quad
画面へ描画する Quad です。
number x
オブジェクトを描画する座標 (x-軸)。
number y
オブジェクトを描画する座標 (y-軸)。
number r (0)
方向 (弧度)。
number sx (1)
尺度変更係数 (x-軸)。
number sy (sx)
尺度変更係数 (y-軸)。
number ox (0)
原点の支距 (x-軸)。
number oy (0)
原点の支距 (y-軸)。
number kx (0)
剪断係数 (x-軸)。
number ky (0)
剪断係数 (y-軸)。

返値

ありません。

注意

紛らわしいですが love.graphics.draw 関数と love.draw コールバック関数を混同しないでください。

過去にあった事例 (Require won't work :s - LÖVE) ですが、 love.draw 内で love.graphics.draw(...) と書くところを love.draw(...) と書いてしまった方がおります。

この場合 love.draw は再帰関数として扱われてしまい、結果としてスタックオーバーフロー (stack overflowed) でエラーになりますので注意してください。

用例

画像 (ハムスター玉) を 100 x 100 ピクセルで描画します。

function love.load()
   hamster = love.graphics.newImage("hamster.png")
end
function love.draw()
   love.graphics.draw(hamster, 100, 100)
end

画像 (ハムスター玉) を中央から 100 x 100 ピクセル、90度回転して描画します。

function love.load()
   hamster = love.graphics.newImage("hamster.png")
   width = hamster:getWidth()
   height = hamster:getHeight()
end
function love.draw()
   love.graphics.draw(hamster, 100, 100, math.rad(90), 1, 1, width / 2, height / 2)
end

LÖVE 0.9.0 から使用可能
この機能性は以前のバージョンでは非対応です。

画像 (ハムスター玉) の上半分を 100 x 100 ピクセルで描画します。

function love.load()
   image = love.graphics.newImage("hamster.png")
   quad = love.graphics.newQuad(0, 0, 128, 64, image:getWidth(), image:getHeight())
end

function love.draw()
	love.graphics.draw(image, quad, 100, 100)
end

関連


そのほかの言語