love.graphics.rotate (Français)
Fait tourner le système de coordonnées dans les 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().
Contents
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
- love.graphics (Français)
- love.graphics.push (Français)
- love.graphics.pop (Français)
- love.graphics.scale (Français)
- love.graphics.shear (Français)
- love.graphics.translate (Français)
- love.graphics.origin (Français)
Autres langues
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info