Erro Mov Player
Página 1 de 1
Erro Mov Player
Ele não está se movendo para o objeto com a layer UI quando é apertado (ele deve se mover apenas para os objetos dos lados e de cima).
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System;
using TMPro;
public class MovPlayer : MonoBehaviour
{
// Booleano para controlar se o jogador deve se mover ou não.
private bool flag = false;
// Variável para guardar a posição final de destino do jogador.
private Vector3 destination;
// Duração do tempo que o jogador leva para se mover até o destino.
public float duration = 1f;
// Posição da altura do jogador em relação ao chão.
private float yAxis;
// Raio de alcance para detectar colisores em volta do jogador.
public float radius = 5.0f;
// Máscara de camada para definir quais camadas o jogador pode detectar colisores.
public LayerMask layersToDetect;
// Distância do centro do colisor onde o jogador deve se posicionar.
public float distanceOffset = 1.0f;
public int AndarInt;
public static bool ControleAnd;
public static bool ControleAtk;
public TMP_Text TextAndando;
public TMP_Text TextAtacando;
void Start()
{
ControleAnd = true;
ControleAtk = false;
//Define a altura do jogador em relação ao chão.
yAxis = gameObject.transform.position.y - 1;
}
void Update()
{
if (Input.GetMouseButtonDown(1))
{
if(ControleAnd == true)
{
ControleAtk = true;
ControleAnd = false;
}
else if (ControleAtk == true)
{
ControleAtk = false;
ControleAnd = true;
}
}
if (ControleAnd == true)
{
TextAndando.enabled = true;
TextAtacando.enabled = false;
}
if (ControleAtk == true)
{
TextAndando.enabled = false;
TextAtacando.enabled = true;
}
AndarInt = InstanciarDado.Andando;
// Detecta colisores em volta do jogador dentro do raio de alcance.
Collider[] colliders = Physics.OverlapSphere(transform.position, radius, layersToDetect);
if (Input.GetMouseButtonDown(0) && ControleAnd == true)
{
// Lança um raio na direção do mouse.
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
// Calcula a direção a partir do ponto de partida do jogador e do ponto de destino.
Vector3 direction = hit.point - transform.position;
direction.y = 0;
direction.Normalize();
// Verifica se a diferença nas coordenadas X ou Z é igual a zero.
if (Mathf.Approximately(Mathf.Abs(direction.x), 0f) || Mathf.Approximately(Mathf.Abs(direction.z), 0f))
{
if (/*AndarInt >= 1 &&*/ flag == false)
{
// Verifica se o colisor atingido está dentro do array de colisores detectados.
if (Array.IndexOf(colliders, hit.collider) >= 0)
{
flag = true;
// Define a posição de destino do jogador no centro do colisor atingido.
destination = hit.collider.bounds.center + new Vector3(0, hit.collider.bounds.extents.y + distanceOffset, 0);
// Define a altura do jogador em relação ao chão.
destination.y = yAxis;
InstanciarDado.Andando -= 1;
}
}
}
}
}
// Se o jogador deve se mover e não chegou ao destino.
if (flag && !Mathf.Approximately(gameObject.transform.position.magnitude, destination.magnitude))
{
// Move o jogador até o destino usando uma interpolação linear.
gameObject.transform.position = Vector3.Lerp(gameObject.transform.position, destination, 1 / (duration * (Vector3.Distance(gameObject.transform.position, destination))));
}
// Se o jogador chegou ao destino.
else if (flag && Mathf.Approximately(gameObject.transform.position.magnitude, destination.magnitude))
{
flag = false;
}
}
}
Bruno Felicio- Iniciante
- PONTOS : 603
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» Script de seleção de player deu erro no UI
» Erro na sincronização dos player no Photon
» erro no scripts de dano no player 2D
» [RESOLVIDO] Erro após desativar o player
» Ajuda com scripts de inimigo e player'' interação de zumbi e player''
» Erro na sincronização dos player no Photon
» erro no scripts de dano no player 2D
» [RESOLVIDO] Erro após desativar o player
» Ajuda com scripts de inimigo e player'' interação de zumbi e player''
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos