Re: Problème de perso/manette
Publié : 24 Jan 2019 19:17
Alors quand mon perso est de dos et fac a la caméra ca marche, donc si je met mion joystick vers la gauche il y ira biens vers la gauche de l'ecran (pareil pour la droite ou devant et derrière). Par contre si mon perso est sur le coté, donc n'est pas face a la caméra nis de dos, la les touches s'inversent..
Code :
Et pour le perso a la souris, il n'utilise pas de Vector3.forward ou Vector3.right, il n'utilise que un Vector3.Distance..
Code :
Code : Tout sélectionner
using System.Collections;
using UnityEngine;
public class DeplacementManette : MonoBehaviour {
// Update is called once per frame
void Update () {
//Déplacement
transform.Translate(transform.forward * Input.GetAxis("LeftJoystickX") * 500 * Time.deltaTime);
transform.Translate(transform.right * Input.GetAxis("LeftJoystickY") * 500 * Time.deltaTime);
var input = new Vector3(Input.GetAxis("RightJoystickX"), 0, Input.GetAxis("RightJoystickY"));
if (input != Vector3.zero)
{
transform.forward = input;
}
}
}
Code : Tout sélectionner
using UnityEngine;
public class PlayerBase : MonoBehaviour
{
// INSPECTOR DATA
[SerializeField]
private float Speed = 1.0f; // Vitesse de déplacement
[SerializeField]
private float distStop = 2.0f;
// PRIVATE DATA
private RaycastHit hit;
private Ray ray;
private int mask; // mask pour que seul le sol soit pris en compte lors du raycast
// Use this for initialization
void Start()
{
mask = 1 << 8;
}
// Update is called once per frame
void Update()
{
// picking sur le sol par raycast pour déterminer le point désigné
// par la souris
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, Mathf.Infinity, mask))
{ // si on est bien sur le sol, alors on oriente le player vers ce point
transform.LookAt(hit.point);
}
// si on ne se trouve pas trop près du point désigné, on
// autorise l'avancé du player
if (Vector3.Distance(hit.point, transform.position) > distStop)
{
float motor = Input.GetAxis("Vertical") * Speed;
transform.Translate(transform.forward * motor, Space.World);
motor = Input.GetAxis("Horizontal") * Speed; //On peut supprimer ces 2 lignes pour que le perso se déplace
transform.Translate(transform.right * motor, Space.World); //Autrement que en tournant autour du curseur
}
}
}