J'ai 14 ans et j'aimerais créer un jeu mobile mais je suis nouveau sur Unity alors voici mon problème. J'aimerais savoir comment faire pour que quand mon perso bouge, l'animation pour courir se fait, j'ai déjà pris un script que j'ai vu sur Youtube pour bouger (avec un joystick).
Voici mon script :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
public FixedJoystick moveJoystick;
public FixedJoystick lookJoystick;
// Update is called once per frame
void Update()
{
UpdateMoveJoystick();
UpdateLookJoystick();
}
void UpdateMoveJoystick()
{
float hoz = moveJoystick.Horizontal;
float ver = moveJoystick.Vertical;
Vector2 convertedXY = ConvertWithCamera(Camera.main.transform.position, hoz, ver);
Vector3 direction = new Vector3(convertedXY.x, 0, convertedXY.y).normalized;
transform.Translate(direction * 0.02f, Space.World);
}
void UpdateLookJoystick()
{
float hoz = lookJoystick.Horizontal;
float ver = lookJoystick.Vertical;
Vector2 convertedXY = ConvertWithCamera(Camera.main.transform.position, hoz, ver);
Vector3 direction = new Vector3(convertedXY.x, 0, convertedXY.y).normalized;
Vector3 lookAtPosition = transform.position + direction;
transform.LookAt(lookAtPosition);
}
private Vector2 ConvertWithCamera(Vector3 cameraPos, float hor, float ver)
{
Vector2 joyDirection = new Vector2(hor, ver).normalized;
Vector2 camera2DPos = new Vector2(cameraPos.x, cameraPos.z);
Vector2 playerPos = new Vector2(transform.position.x, transform.position.z);
Vector2 cameraToPlayerDirection = (Vector2.zero - camera2DPos).normalized;
float angle = Vector2.SignedAngle(cameraToPlayerDirection, new Vector2(0, 1));
Vector2 finalDirection = RotateVector(joyDirection, -angle);
return finalDirection;
}
public Vector2 RotateVector(Vector2 v, float angle)
{
float radian = angle * Mathf.Deg2Rad;
float _x = v.x * Mathf.Cos(radian) - v.y * Mathf.Sin(radian);
float _y = v.x * Mathf.Sin(radian) + v.y * Mathf.Cos(radian);
return new Vector2(_x, _y);
}
}