[RÉSOLU] Diriger personnage avec la souris sur jeu type Zelda 2D.....
[RÉSOLU] Diriger personnage avec la souris sur jeu type Zelda 2D.....
Bonjour, je débute en codage C# et commence les problèmes, quelqu'un pourrait-il me donner une solution en C# permettant de déplacer mon personnage grâce à la souris et non les touches du clavier sur un jeux de type Zelda en 2D.
En effet j'ai réussi à trouver comment faire avec les touches du clavier (les flèches), mais la souris c'est une autre histoire!
Merci par avance pour vos coup de mains !
En effet j'ai réussi à trouver comment faire avec les touches du clavier (les flèches), mais la souris c'est une autre histoire!
Merci par avance pour vos coup de mains !
Re: Diriger personnage avec la souris sur jeu type Zelda 2D.....
Bonjour SVPROG ,
Si par contre tu souhaites plutôt passer par une méthode point and click, alors il faut que tu regardes du coté de Camera.ScreenToWorldPoint.
Après si tu coinces niveau mise en œuvre, n'hésite pas à poster ton code, on t'aidera à avancer.
Les informations de position de la souris sont récupérable par le biais de Input.mousePosition. Tu peux aussi passer par
Input.GetAxis ("Mouse X")
et Input.GetAxis ("Mouse Y")
.Si par contre tu souhaites plutôt passer par une méthode point and click, alors il faut que tu regardes du coté de Camera.ScreenToWorldPoint.
Après si tu coinces niveau mise en œuvre, n'hésite pas à poster ton code, on t'aidera à avancer.
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
Re: Diriger personnage avec la souris sur jeu type Zelda 2D.....
Pas directement liée, mais intéressante à connaître : la navigation avec un NavMeshAgent. Le NavMesh permet à un personnage de se diriger vers une destination en évitant les obstacles et les autres personnages, tout en en interdisant certaines parties (bon c'est un sacré résumé, mais l'idée est là).
Re: Diriger personnage avec la souris sur jeu type Zelda 2D.....
Merci de ta réponse, je joins mon code de façon à ce que ce soit plus clair pour tous, mais je ne sais toujours pas ce qui ne fonctionne pas. Vous verrez il y a une partie du code qui est mise en commentaire, c'est la partie que je pensais pour gérer la souris avec quelques Debug.Log qui me permettait de voir en console que la souris était bien là!Max a écrit : ↑28 Mai 2020 08:19Bonjour SVPROG ,
Les informations de position de la souris sont récupérable par le biais de Input.mousePosition. Tu peux aussi passer parInput.GetAxis ("Mouse X")
etInput.GetAxis ("Mouse Y")
.
Si par contre tu souhaites plutôt passer par une méthode point and click, alors il faut que tu regardes du coté de Camera.ScreenToWorldPoint.
Après si tu coinces niveau mise en œuvre, n'hésite pas à poster ton code, on t'aidera à avancer.
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float vitesse;
private Rigidbody2D monRigidBody;
private Vector3 change;
// Vector3 newPosition = Vector3.zero;
// public GameObject Point;
// Start is called before the first frame update
void Start()
{
monRigidBody = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
change = Vector3.zero;
change.x = Input.GetAxisRaw("Horizontal");
change.y = Input.GetAxisRaw("Vertical");
if (change != Vector3.zero)
{
BougePersonnage();
}
/*if (Input.GetMouseButtonDown(0)) --> Test diriger personnage avec souris
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
newPosition = hit.point;
}
if (newPosition != Vector3.zero)
{
transform.position = Vector3.MoveTowards(transform.position, newPosition, vitesse * Time.deltaTime);
}
Debug.Log("Click gauche");
}
/*if (Input.GetMouseButtonDown(1))
{
Debug.Log("Click droit");
}
if (Input.GetMouseButtonDown(2))
{
Debug.Log("Click molette");
}*/
}
void BougePersonnage()
{
monRigidBody.MovePosition(transform.position + change * vitesse * Time.deltaTime);
}
}
Re: Diriger personnage avec la souris sur jeu type Zelda 2D.....
ok, bon si on reprend ton code actuel, tu peux essayer de remplacer
par
Code : Tout sélectionner
change.x = Input.GetAxisRaw("Horizontal");
change.y = Input.GetAxisRaw("Vertical");
Code : Tout sélectionner
change.x = Input.GetAxis("Mouse X");
change.y = Input.GetAxis("Mouse Y");
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
Re: Diriger personnage avec la souris sur jeu type Zelda 2D.....
Salut,
Ne pas oublier de donner une valeur à la variable vitesse dans l'inspector
C'est une erreur que j'ai déjà faite,
Et dans ce cas, ça marche, mais rien ne bouge.
Ne pas oublier de donner une valeur à la variable vitesse dans l'inspector
C'est une erreur que j'ai déjà faite,
Et dans ce cas, ça marche, mais rien ne bouge.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.
Re: Diriger personnage avec la souris sur jeu type Zelda 2D.....
Merci , effectivement le personnage suit la souris, mais en fait je me suis mal expliqué peut être, en fait bje souhaiterai que lorsque je clique à un endroit sur ma carte, le personnage se déplace jusqu'à l'endroit désigné, mais tant que je n'ai pas cliqué, il reste dans sa position initiale!
Idem pour la gauche, la droite, le bas et le haut!
Merci encore
Idem pour la gauche, la droite, le bas et le haut!
Merci encore
Re: Diriger personnage avec la souris sur jeu type Zelda 2D.....
Dans ce cas, va voir le conseil de Max
Max a écrit :Si par contre tu souhaites plutôt passer par une méthode point and click, alors il faut que tu regardes du coté de Camera.ScreenToWorldPoint
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.
- E3DStef
- Administrateur
- Messages : 1646
- Inscription : 14 Juil 2013 18:30
- Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/
Re: Diriger personnage avec la souris sur jeu type Zelda 2D.....
Il faut que tu passe par un event CLICSVPROG a écrit : ↑28 Mai 2020 14:27Merci , effectivement le personnage suit la souris, mais en fait je me suis mal expliqué peut être, en fait bje souhaiterai que lorsque je clique à un endroit sur ma carte, le personnage se déplace jusqu'à l'endroit désigné, mais tant que je n'ai pas cliqué, il reste dans sa position initiale!
Idem pour la gauche, la droite, le bas et le haut!
Merci encore
Genre
If ClicBoutonGaucheSouris
directionX = position X de la souris
directionY = position Y de la souris
fin if
Code : Tout sélectionner
void Update()
{
if (Input.GetMouseButton(0))
{
change.x = Input.GetAxis("Mouse X");
change.y = Input.GetAxis("Mouse Y");
BougePersonnage();
}
}
Le Savoir n'est Précieux que s'il est Partagé
Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com
Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com
Re: Diriger personnage avec la souris sur jeu type Zelda 2D.....
Merci pour vos réponses!
Avec les modifs que tu m'as proposé, le personnage suit bien la souris, dans toutes directions, mais est constamment rattaché au mouvement de la souris. En fait ce que je souhaiterais, c'est qu'il se déplace au clic de souris et s'arrête à l'endroit où j'ai cliqué, un peu comme dans "Heros III" (un peu seulement,j'ai pas encore la prétention de faire un jeu comme ça ;O). Je joins le code :
PS: Ce que j'ai mis en commentaire sont mes divers essais pas très concluants!
Encore merci à vous !
Avec les modifs que tu m'as proposé, le personnage suit bien la souris, dans toutes directions, mais est constamment rattaché au mouvement de la souris. En fait ce que je souhaiterais, c'est qu'il se déplace au clic de souris et s'arrête à l'endroit où j'ai cliqué, un peu comme dans "Heros III" (un peu seulement,j'ai pas encore la prétention de faire un jeu comme ça ;O). Je joins le code :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float vitesse;
private Rigidbody2D monRigidBody;
private Vector3 change;
// Vector3 newPosition = Vector3.zero;
// public GameObject Point;
// Start is called before the first frame update
void Start()
{
monRigidBody = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
change = Vector3.zero;
change.x = Input.GetAxisRaw("Mouse X");
change.y = Input.GetAxisRaw("Mouse Y");
// if (change != Vector3.zero)
// {
BougePersonnage();
// }
/*if (Input.GetMouseButtonDown(0)) --> Test diriger personnage avec souris
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
newPosition = hit.point;
}
if (newPosition != Vector3.zero)
{
transform.position = Vector3.MoveTowards(transform.position, newPosition, vitesse * Time.deltaTime);
}
Debug.Log("Click gauche");
}
/*if (Input.GetMouseButtonDown(1))
{
Debug.Log("Click droit");
}
if (Input.GetMouseButtonDown(2))
{
Debug.Log("Click molette");
}*/
}
void BougePersonnage()
{
monRigidBody.MovePosition(transform.position + change * vitesse * Time.deltaTime);
}
}
Encore merci à vous !