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

(Created page with "Drawable オブジェクト(Image, Canvas, SpriteBatch, ParticleSystem (日...")
 
(Undo revision 28030 by Popolon (talk) - The default value for sy is the same value as sx, not 1.)
(Tag: Undo)
 
(13 intermediate revisions by 2 users not shown)
Line 8: Line 8:
  
 
オブジェクトの右と左の端は剪断係数へ角を定義することによりずらすことができます。
 
オブジェクトの右と左の端は剪断係数へ角を定義することによりずらすことができます。
 +
 +
デフォルトシェーダの使用時、この関数で描画されたものは現在選択中の色で着色します。オブジェクトの原色を保持するには純白を設定します。
 +
 
== 関数 ==
 
== 関数 ==
 
=== 概要 ===
 
=== 概要 ===
Line 37: Line 40:
 
=== 引数 ===
 
=== 引数 ===
 
{{param|Texture|texture|[[Quad (日本語)|Quad]] へテクスチャとして取り込む [[Texture (日本語)|Texture]] または [[Canvas (日本語)|Canvas]] です。}}
 
{{param|Texture|texture|[[Quad (日本語)|Quad]] へテクスチャとして取り込む [[Texture (日本語)|Texture]] または [[Canvas (日本語)|Canvas]] です。}}
{{param|Quad|quad|画面へ描画する長方形。}}
+
{{param|Quad|quad|画面へ描画する Quad です。}}
 
{{param|number|x|オブジェクトを描画する座標 (x-軸)。}}
 
{{param|number|x|オブジェクトを描画する座標 (x-軸)。}}
 
{{param|number|y|オブジェクトを描画する座標 (y-軸)。}}
 
{{param|number|y|オブジェクトを描画する座標 (y-軸)。}}
Line 49: Line 52:
 
=== 返値 ===
 
=== 返値 ===
 
ありません。
 
ありません。
 +
 +
== 関数 ==
 +
{{newin (日本語)|[[11.0]]|110|type=異形}}
 +
=== 概要 ===
 +
<source lang="lua">
 +
love.graphics.draw( drawable, transform )
 +
</source>
 +
=== 引数 ===
 +
{{param|Drawable|drawable|描画可能なオブジェクト。}}
 +
{{param|Transform|transform|変換用オブジェクト。}}
 +
=== 返値 ===
 +
ありません。
 +
 +
== 関数 ==
 +
{{newin (日本語)|[[11.0]]|110|type=異形}}
 +
=== 概要 ===
 +
<source lang="lua">
 +
love.graphics.draw( texture, quad, transform )
 +
</source>
 +
=== 引数 ===
 +
{{param|Texture|texture|[[Quad (日本語)|Quad]] へテクスチャとして取り込む [[Texture (日本語)|Texture]] または [[Canvas (日本語)|Canvas]] です。}}
 +
{{param|Quad|quad|画面へ描画する Quad です。}}
 +
{{param|Transform|transform|変換用オブジェクト。}}
 +
=== 返値 ===
 +
ありません。
 +
 +
== 注意 ==
 +
紛らわしいですが 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) でエラーになりますので注意してください。
 +
 
== 用例 ==
 
== 用例 ==
 
=== 画像 ([[:File:Resource-HamsterBall.png|ハムスター玉]]) を 100 x 100 ピクセルで描画します。 ===
 
=== 画像 ([[:File:Resource-HamsterBall.png|ハムスター玉]]) を 100 x 100 ピクセルで描画します。 ===
Line 54: Line 90:
 
function love.load()
 
function love.load()
 
   hamster = love.graphics.newImage("hamster.png")
 
   hamster = love.graphics.newImage("hamster.png")
  width = hamster:getWidth()
 
  height = hamster:getHeight()
 
 
end
 
end
 
function love.draw()
 
function love.draw()
   love.graphics.draw(hamster, 100, 100, math.rad(90), 1, 1, width / 2, height / 2)
+
   love.graphics.draw(hamster, 100, 100)
 
end
 
end
 
</source>
 
</source>
 +
 
=== 画像 ([[:File:Resource-HamsterBall.png|ハムスター玉]]) を中央から 100 x 100 ピクセル、90度回転して描画します。 ===
 
=== 画像 ([[:File:Resource-HamsterBall.png|ハムスター玉]]) を中央から 100 x 100 ピクセル、90度回転して描画します。 ===
 
<source lang="lua">
 
<source lang="lua">
Line 72: Line 107:
 
end
 
end
 
</source>
 
</source>
-----
+
 
 +
=== 画像 ([[:File:Resource-HamsterBall.png|ハムスター玉]]) を中央に置いて、カーソルキーで角度指定できるようします。 ===
 +
<source lang="lua">
 +
local direction = 0
 +
local width, height = 128, 128
 +
 
 +
function love.load()
 +
creature = love.graphics.newImage("hamster.png")
 +
love.keyboard.setKeyRepeat(true)
 +
end
 +
 
 +
 
 +
function love.draw()
 +
love.graphics.draw(creature, 400 - width, 300 - height, math.rad(direction), 1, 1, width / 2, height / 2)
 +
end
 +
 
 +
function love.keypressed(key)
 +
 
 +
if (key == 'w') then
 +
direction = direction + math.rad(30)
 +
end
 +
 
 +
if (key == 's') then
 +
direction = direction - math.rad(30)
 +
end
 +
 
 +
if (key == 'up') then
 +
direction = 0
 +
end
 +
 
 +
if (key == 'right') then
 +
direction = 90
 +
end
 +
 
 +
if (key == 'down') then
 +
direction = 180
 +
end
 +
 
 +
if (key == 'left') then
 +
direction = 270
 +
end
 +
end
 +
 
 +
-- キーを離すと上向きに戻します。
 +
function love.keyreleased(key)
 +
direction = 0
 +
end
 +
</source>
 +
 
 
{{newin (日本語)|[[0.9.0]]|090|type=機能性}}
 
{{newin (日本語)|[[0.9.0]]|090|type=機能性}}
 +
 
=== 画像 ([[:File:Resource-HamsterBall.png|ハムスター玉]]) の上半分を 100 x 100 ピクセルで描画します。 ===
 
=== 画像 ([[:File:Resource-HamsterBall.png|ハムスター玉]]) の上半分を 100 x 100 ピクセルで描画します。 ===
 
<source lang="lua">
 
<source lang="lua">
Line 93: Line 177:
 
{{#set:Since=000}}
 
{{#set:Since=000}}
 
== そのほかの言語 ==
 
== そのほかの言語 ==
{{i18n|love.graphics.draw}}
+
{{i18n (日本語)|love.graphics.draw}}

Latest revision as of 05:19, 6 October 2022

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-軸)。

返値

ありません。

関数

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

概要

love.graphics.draw( drawable, transform )

引数

Drawable drawable
描画可能なオブジェクト。
Transform transform
変換用オブジェクト。

返値

ありません。

関数

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

概要

love.graphics.draw( texture, quad, transform )

引数

Texture texture
Quad へテクスチャとして取り込む Texture または Canvas です。
Quad quad
画面へ描画する Quad です。
Transform transform
変換用オブジェクト。

返値

ありません。

注意

紛らわしいですが 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

画像 (ハムスター玉) を中央に置いて、カーソルキーで角度指定できるようします。

local direction = 0
local width, height = 128, 128

function love.load()
	creature = love.graphics.newImage("hamster.png")
	love.keyboard.setKeyRepeat(true)
end


function love.draw()
	love.graphics.draw(creature, 400 - width, 300 - height, math.rad(direction), 1, 1, width / 2, height / 2)
end

function love.keypressed(key)

	if (key == 'w') then
		direction = direction + math.rad(30)
	end

	if (key == 's') then
		direction = direction - math.rad(30)
	end

	if (key == 'up') then
		direction = 0
	end

	if (key == 'right') then
		direction = 90
	end

	if (key == 'down') then
		direction = 180
	end

	if (key == 'left') then
		direction = 270
	end
end

-- キーを離すと上向きに戻します。
function love.keyreleased(key)
	direction = 0
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

関連


そのほかの言語