Verificar se pode mover ou não ao se aproximar de um obstaculo.
2 participantes
Página 1 de 1
Verificar se pode mover ou não ao se aproximar de um obstaculo.
Opa,
Tenho aqui um grid (imagem aplicada sobre um plano), e a cada movimento o player vai para frente/trás/lados nos espaços do grid. Porem, preciso fazer uma verificação de quando ele pode mover ou não pode mover, por exemplo ao se aproximar de um obstaculo, ele não pode se mover na direção dele e sim permanecer no mesmo lugar caso o jogador de o comendo para ir em direção ao obstaculo.
Segue um print para melhor entendimento: https://i.imgur.com/y7Zt8Jh.png
Ideias são bem vindas, obrigado!
Tenho aqui um grid (imagem aplicada sobre um plano), e a cada movimento o player vai para frente/trás/lados nos espaços do grid. Porem, preciso fazer uma verificação de quando ele pode mover ou não pode mover, por exemplo ao se aproximar de um obstaculo, ele não pode se mover na direção dele e sim permanecer no mesmo lugar caso o jogador de o comendo para ir em direção ao obstaculo.
Segue um print para melhor entendimento: https://i.imgur.com/y7Zt8Jh.png
Ideias são bem vindas, obrigado!
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Verificar se pode mover ou não ao se aproximar de um obstaculo.
Colisor não rula? se não servir, poste ai o script de movimento para trabalhar-mos em cima dele
Re: Verificar se pode mover ou não ao se aproximar de um obstaculo.
Com colisor não rola, pois meu player tem que sempre estar nas posições x y e z em 0. Ai quando eu colido buga tudo.
Segue meu escript de movimento e de rotação:
Segue meu escript de movimento e de rotação:
- Código:
using UnityEngine;
using System.Collections;
public class ControlPlayer : MonoBehaviour {
float lerpTime;
float currentLertTime;
float perc = 1;
public float distanciaPulo = 2f;
Vector3 startPos;
Vector3 endPos;
bool firstInput;
public bool justJump;
public float speed;
void Update ()
{
if(Input.GetButtonDown("up") || (Input.GetButtonDown("down") || (Input.GetButtonDown("left") || (Input.GetButtonDown("right")))))
{
if(perc == 1)
{
lerpTime = 2;
currentLertTime = 0;
firstInput = true;
justJump = true;
}
}
startPos = gameObject.transform.position;
/*
if (Input.GetAxisRaw("Horizontal") > 0 ) {
transform.Translate (Vector2.right * speed * Time.deltaTime);
}
if (Input.GetAxisRaw("Vertical") < 0 ) {
transform.Translate (-Vector2.right * speed * Time.deltaTime);
}
*/
if (Input.GetButtonDown("down") && gameObject.transform.position == endPos)
{
endPos = new Vector3(transform.position.x - distanciaPulo, transform.position.y, transform.position.z);
ContEnergia.energia--;
}
if(Input.GetButtonDown("up")&& gameObject.transform.position == endPos)
{
endPos = new Vector3(transform.position.x + distanciaPulo, transform.position.y, transform.position.z);
ContEnergia.energia--;
}
if(Input.GetButtonDown("left")&& gameObject.transform.position == endPos)
{
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z + distanciaPulo);
ContEnergia.energia--;
}
if(Input.GetButtonDown("right")&& gameObject.transform.position == endPos)
{
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z - distanciaPulo);
ContEnergia.energia--;
}
if (firstInput == true) {
currentLertTime += Time.deltaTime * 5;
perc = currentLertTime / lerpTime;
gameObject.transform.position = Vector3.Lerp (startPos, endPos, perc);
if (perc > 0.8) {
perc = 1;
}
if (Mathf.Round (perc) == 1) {
justJump = false;
}
}
}
}
- Código:
using UnityEngine;
using System.Collections;
public class RotatePlayer : MonoBehaviour {
public GameObject thePlayer;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetButtonDown("left"))
{
gameObject.transform.rotation = Quaternion.Euler (0, 90, 0);
}
if(Input.GetButtonDown("right"))
{
gameObject.transform.rotation = Quaternion.Euler (0, -90, 0);
}
if(Input.GetButtonDown("up"))
{
gameObject.transform.rotation = Quaternion.Euler (0, 180, 0);
}
if(Input.GetButtonDown("down"))
{
gameObject.transform.rotation = Quaternion.Euler (0, 0, 0);
}
}
}
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Verificar se pode mover ou não ao se aproximar de um obstaculo.
Eu realmente não entendi... o Player sempre vai estar fixo? então o cenário se move?
Re: Verificar se pode mover ou não ao se aproximar de um obstaculo.
Não marcos, o player se move, mas se algo impede ele de se mover ele buga (pode fazer o teste ai). A cada comando no teclado, ele se move o valor 1 na escala, e avança um espaço do grid.
Por isso precisamos fazer uma verificação se ele pode mover ou não. Eu já tenho a lógica, que seria mais ou menos assim: Fazer 4 variáveis bool (frente, trás, direita, esquerda) e colocar os movimentos true nelas. Ai colocar 4 OnTriggerEnter nos 4 lados das das arvores, que ocupem um espaço do grid antes dele, e que quando o player chegar perto ele deixe as variáveis false, impedindo que o player se mova.
Porem ainda não sei fazer isso na pratica. Se puder ajudar, ficarei muito feliz :D
Abraços
Por isso precisamos fazer uma verificação se ele pode mover ou não. Eu já tenho a lógica, que seria mais ou menos assim: Fazer 4 variáveis bool (frente, trás, direita, esquerda) e colocar os movimentos true nelas. Ai colocar 4 OnTriggerEnter nos 4 lados das das arvores, que ocupem um espaço do grid antes dele, e que quando o player chegar perto ele deixe as variáveis false, impedindo que o player se mova.
Porem ainda não sei fazer isso na pratica. Se puder ajudar, ficarei muito feliz :D
Abraços
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: Verificar se pode mover ou não ao se aproximar de um obstaculo.
Cara, use Raycast para detectar se tem alguma colisão
faça um raycast para cada lado e use o esquema das booleanas
faça um raycast para cada lado e use o esquema das booleanas
Tópicos semelhantes
» Verificar de um arquivo é PNG e verificar resolução
» Verificar distância
» Exibir dialógo ao aproximar - Script
» Verificar Colisão
» Objetos ficando invisivel ao se aproximar com a camera
» Verificar distância
» Exibir dialógo ao aproximar - Script
» Verificar Colisão
» Objetos ficando invisivel ao se aproximar com a camera
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos