Jump to content

Move Element On Cursor


Recommended Posts

Bonsoir,

Un nouveau problème se pose à moi, je travaille à sa résolution depuis déjà plusieurs heures et j'essaye d'y voir plus clair c'est pourquoi je poste ici.

En faite, je réalise un système qui permettrait au joueur de déplacer un objet via la souris, jusqu'ici, pas de soucis, je sais faire ça.

Seulement, je n'arrive pas à établir l'algorithme de "Depth" pour la fonction getWorldFromScreenPosition étant donné que ma caméra est en vue de plongée.
 

function move()
  local cursorX, cursorY = getCursorPosition()
  if (cursorX and cursorY and isElement(clickedElement)) then
    local _, _, posCameraZ = getCameraMatrix()
    local rotX, _, _ = getElementRotation(getCamera())
    local depth = posCameraZ
    local posElementX, posElementY, posElementZ = getWorldFromScreenPosition(cursorX*screenX, cursorY*screenY, depth)
    local posBusZ = getGroundPosition(posElementX, posElementY, posElementZ) + getElementDistanceFromCentreOfMassToBaseOfModel(clickedElement) * 2
    outputDebugString("Depth: "..tostring(depth))
    setElementPosition(clickedElement, posElementX, posElementY, posElementZ)
  end
end

 

En jeu ma vue c'est celle-ci: 

64837622f4eb0e6ccce4287f5548a0221f8eb6.j

 

Merci à vous pour l'aide que vous apporterez!

Link to comment

Le depth c'est la profondeur pour la fonction getWorldFromScreenPosition, parce que tu renseigne le X, et Y mais il faut renseigner la profondeur de la caméra vers le sol, cependant, ma caméra est inclinée ce qui fait que le sol n'a pas la même profondeur sur tout l'écran, genre en bas de l'écran, la profondeur (depth) vas être de 12 admettons et tout en haut de 32 car ma caméra n'est pas droite.

ça me servirait à aligner l'objet avec la souris car actuellement il fait des trucs chelou à cause du depth qui n'est pas bien renseigné.

Link to comment
  • Moderators

Tu hardcodes la valeur depth à 999 puis tu utilises processLineOfSight entre la caméra x, y, z et le x, y, z de ce que t'a retourné getWorldFromScreenPosition.
Les valeurs hitX, hitY, hitZ retourné par processLineOfSight représenteront le point d'impact avec le sol, objet ou autre (tu peux régler ce que tu dois prendre en compte pour le point d'impact. Par défaut: tout).

 

Edited by Citizen
Link to comment

ça résous rien à mon problème, en faite ce que j'ai comme problème c'est que c'est les mauvaises positions que je récupère lorsque mon curseur est pointé par rapport au depth.

J'ai essayé ce que tu m'as dis mais ça m'avance en rien.

 

Quand je met la caméra en vue du dessus donc en 2D quoi, là j'ai aucun problème ma fonction marche.

Mais quand je penche la caméra, ça déraille.

Edited by Wumbaloo
Explications ajoutés
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...