Unity3D - Meu boneco fica girando no eixo Y sem parar, parece o sonic
2 participantes
Página 1 de 1
Unity3D - Meu boneco fica girando no eixo Y sem parar, parece o sonic
Eu não sei o pq, mas meu boneco não para de girar dando várias cambalhotas sem parar, aqui está o script:
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class PlayerController : MonoBehaviour
{
[Header("PlayerConfig")]
public string playerName;
public int life;
public float speed;
public float runSpeed;
public float mouseSensitivity;
public bool enableMouse;
[Header("Imports")]
public Camera cam;
private float realSpeed;
private Vector3 velocity;
private Rigidbody rb;
private Vector3 rotation;
private Vector3 camRotation;
private float rotCam;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
#region Movimentação
float _xMov = Input.GetAxisRaw("Horizontal");
float _yMov = Input.GetAxisRaw("Vertical");
//se ele correr para a frente, receberá runspeed, senão, receberá a speed normal
if(Input.GetButton("Run") == true && _xMov == 0 && _yMov == 1)
{
realSpeed = runSpeed;
}
else
{
realSpeed = speed;
}
//aqui é pego a direção e multiplica pela velocidade atual ao pressionar o botão
Vector3 _moveHorinzontal = transform.right * _xMov;
Vector3 _moveVertical = transform.forward * _yMov;
//vai pegar os dois vetores anteriores e transformar eles entre 0 e 1
velocity = (_moveHorinzontal + _moveVertical).normalized * realSpeed;
#endregion
#region Rotação
//
float _yMouse = Input.GetAxis("Mouse X");
rotation = new Vector3(0, _yMouse, 0) * mouseSensitivity;
float _xMouse = Input.GetAxis("Mouse Y");
camRotation = new Vector3(_xMouse, 0, 0) * mouseSensitivity;
#endregion
#region Mouse
//habilitar desabilitar o cursor do mouse
if (enableMouse)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
else
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
}
#endregion
}
private void FixedUpdate()
{
if (enableMouse == true)
{
Move();
Rotation();
}
}
void Move()
{
//isso da movimento baseado na velocidade ao player
if (velocity != Vector3.zero)
{
rb.MovePosition(rb.position + velocity * Time.deltaTime);
}
}
void Rotation()
{
rb.MoveRotation(rb.rotation * Quaternion.Euler(rotation));
if (cam != null)
{
rotCam += camRotation.x;
//isso não deixa a camera ficar de cabeça pra baixo
rotCam += Mathf.Clamp(rotCam, -80, 80);
cam.transform.localEulerAngles = new Vector3(-rotCam, 0, 0);
}
}
}
darkrj- Avançado
- PONTOS : 2324
REPUTAÇÃO : 15
Respeito as regras :
Re: Unity3D - Meu boneco fica girando no eixo Y sem parar, parece o sonic
- Código:
Basicamente você inverteu todos os Axis X e Y.
Giwn- Membro
- PONTOS : 2833
REPUTAÇÃO : 13
Idade : 21
Áreas de atuação : Programação e Modelagem
Respeito as regras :
Tópicos semelhantes
» Como fazer um campo de visao, vi varios tuturs mas realmente parece ser complexo
» Movimento do Sonic
» ScrowView parece não estar funcionando direito
» Drop de aneis tipo no Sonic
» DÚVIDA - ao pressionar andar, o player parece cancelar a gravidade (VÍDEO)
» Movimento do Sonic
» ScrowView parece não estar funcionando direito
» Drop de aneis tipo no Sonic
» DÚVIDA - ao pressionar andar, o player parece cancelar a gravidade (VÍDEO)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos