love.graphics.rotate (Français)

Pivote le système de coordonnées en deux dimensions.

L'appel de cette fonction affecte toutes les opérations de tracé suivantes en faisant tourner le système de coordonnées autour de l'origine par la quanti de radians donnée. Ce changement persiste jusqu'à la fin de la fonction love.draw().

Fonction

Synopsis

love.graphics.rotate( angle )

Arguments

number (Français) angle
Angle de rotation du système de coordonnées, en radians.

Retourne

Rien.

Exemples

Faire pivoter une scène statique

Cette exemple montre comment faire pivoter une scène statique autour d'un point donné. Comme la rotation est toujours autour de l'origine, effectuer une translation du centre de l'écran jusqu'à l'origine puis faire pivoter la scène autour, rend le point effectif de rotation comme centre de l'écran. Cela est démontré en trancant un rectangle qui montre la rotation d'un point étant juste à droite du centre et ne se déplaçant donc pas lorsque la scène tourne. Il faut noter que les commandes de tracé comporte des coordonnées qui ne dépendent que de la taille de l'écran.

local angle = 0

function love.update(dt)
	-- Rotate a quarter turn per second.
	angle = angle + .5*math.pi * dt
end

function love.draw()
	local width, height = love.graphics.getDimensions()

	local centerX = width/2
	local centerY = height/2

	-- Pivote autour du centre de l'écran d'un angle indiqué en radians.
	love.graphics.translate(centerX, centerY)
	love.graphics.rotate(angle)
	love.graphics.translate(-centerX, -centerY)

	-- Trace un rectangle blanc légèrement décalé du centre.
	love.graphics.setColor(1, 1, 1)
	love.graphics.rectangle("fill", centerX-100, centerY-100, 300, 400)

	-- Trace différents textes en noir avec leur point haut gauche au centre.
	love.graphics.setColor(0, 0, 0)
	love.graphics.print("Lorem ipsum.", centerX, centerY)

	-- Trace un point bleu large de cinq pixels au centre.
	love.graphics.setPointSize(5)
	love.graphics.setColor(0, 0, 1)
	love.graphics.points(centerX, centerY)
end

Pivoter tout l'écran

Cet exemple montre comment faire pivoter l'écran de 90 degrés, dans le sens inverse des aiguilles d'une montre. C'est très utile si vous distribuez des fichiers .love pour Android, où le jeu commence toujours en mode paysage. Après cette rotation,, la largeur et hauteur du canvas seront « échangés ». N'oubliez pas d'en tenir compte et de toujours traduire les saisies et les vérifications de bordure d'écran.

-- Fonction simple pour traduire les coordonnées de l'écran vers les coordonnées du jeu.
local function screenToGame(xOnScreen, yOnScreen)
	local xInGame = love.graphics.getHeight() - yOnScreen
	local yInGame = xOnScreen

	return xInGame, yInGame
end

function love.draw()
	local screenWidth, screenHeight = love.graphics.getDimensions()

	-- Transforme le système de coordonnées afin lue le point haut-gauche dans le jeu soit
	-- the le coin bas-gauche de l'écran.
	love.graphics.translate(0, screenHeight)
	love.graphics.rotate(-math.pi/2)

	-- Trace du texte dans l'angle (traduit) haut gauche.
	love.graphics.setColor(1, 1, 1)
	love.graphics.print("Lorem ipsum.", 5, 5)

	-- Trace un rectangle qui s'éclaircit lorsque l'on passe dessus.
	local rectX      = 150
	local rectY      = 250
	local rectWidth  = 180
	local rectHeight = 110

	local mouseX, mouseY = love.mouse.getPosition()     -- À l'écran.
	mouseX, mouseY       = screenToGame(mouseX, mouseY) -- Dans le jeu.

	local isHovered = (mouseX >= rectX and mouseY >= rectY and mouseX < rectX+rectWidth and mouseY < rectY+rectHeight)

	if isHovered then
		love.graphics.setColor(1, 1, 1)
	else
		love.graphics.setColor(1, 0, 0)
	end
	love.graphics.rectangle("fill", rectX, rectY, rectWidth, rectHeight)
end

Voir également



Autres langues