[RESOLVIDO] Onde ta o erro no meu script (SeguirInimigo) pela posição ? #HELP
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Onde ta o erro no meu script (SeguirInimigo) pela posição ? #HELP
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SeguirInimigo : MonoBehaviour {
private Transform player; // quadrado
private Transform player2; // quadrado2
private Transform posicao;
public float Velocidade = 1.005f;
void Update () {
posicao = GetComponent<Transform> ();
player = GameObject.FindGameObjectWithTag ("Player").transform;
player2 = GameObject.FindGameObjectWithTag ("Player2").transform;
posicao.position = Vector3.Lerp (bat.position,player.position, Velocidade);
if (player == null) {
posicao.position = Vector3.Lerp (bat.position,player2.position, Velocidade);
}
}
}
depois de compilado , o objeto (cubo) está seguindo perfeitamente o objeto [quadrado, onde tem um Destroy(gameobject, 3)],que tem a tag "Player", só que quando o objeto é Destruido (=null), ele deveria pela lógica do meu script seguir imediatamente a tag "Player2" (quadrado2), só que ele fica no mesmo lugar onde o objeto (quadrado) foi destruído ... oque tem de errado no script???
Última edição por MarcosSchultz em Qui Jul 13, 2017 1:29 pm, editado 2 vez(es) (Motivo da edição : Resolvido)
hamerom- Membro
- PONTOS : 2800
REPUTAÇÃO : 5
Respeito as regras :
Re: [RESOLVIDO] Onde ta o erro no meu script (SeguirInimigo) pela posição ? #HELP
troquem a palavra bat por posicao, é porque o bat era do script do bruno games endie, errei ao copiar !!!
hamerom- Membro
- PONTOS : 2800
REPUTAÇÃO : 5
Respeito as regras :
Re: [RESOLVIDO] Onde ta o erro no meu script (SeguirInimigo) pela posição ? #HELP
na verdade na linha 22 se o objeto player for destruído vai gerar um nullreferenceexception, e como você ai
ele ainda executara a linha 22 porque ela não esta em um else (caso contrario, se não, blablabla)
tente isso
- Código:
if (player == null) {
posicao.position = Vector3.Lerp (bat.position,player2.position, Velocidade);
}
ele ainda executara a linha 22 porque ela não esta em um else (caso contrario, se não, blablabla)
tente isso
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SeguirInimigo : MonoBehaviour
{
private Transform player;
private Transform player2;
private Transform whoIAmFollowing;
public float Velocidade = 1.005f;
private void Start()
{
player = GameObject.FindGameObjectWithTag("Player").transform;
player2 = GameObject.FindGameObjectWithTag("Player2").transform;
}
void Update()
{
if (player == null)
whoIAmFollowing = player2;
else
whoIAmFollowing = player;
transform.position = Vector3.Lerp(transform.position, whoIAmFollowing.position, Velocidade);
}
}
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [RESOLVIDO] Onde ta o erro no meu script (SeguirInimigo) pela posição ? #HELP
cara a um erro de logica reversa
faz assim:
if(player1){
transform.position = Vector3.Lerp(transform.position, player1.position, Velocidade*Time.deltaTime);
}else{
if(player2){
transform.position = Vector3.Lerp(transform.position, player2.position, Velocidade*Time.deltaTime);
}
}
ele deve dar um erro quando o player é detruido, e o script trava naquela linha e nao roda dali em diante;
assim o objeto nao segue o player 2 pq o script travou deve sempre pensar o que acontece se o o objeto ou script for null
faz assim:
if(player1){
transform.position = Vector3.Lerp(transform.position, player1.position, Velocidade*Time.deltaTime);
}else{
if(player2){
transform.position = Vector3.Lerp(transform.position, player2.position, Velocidade*Time.deltaTime);
}
}
ele deve dar um erro quando o player é detruido, e o script trava naquela linha e nao roda dali em diante;
assim o objeto nao segue o player 2 pq o script travou deve sempre pensar o que acontece se o o objeto ou script for null
Re: [RESOLVIDO] Onde ta o erro no meu script (SeguirInimigo) pela posição ? #HELP
weslleyFx escreveu:na verdade na linha 22 se o objeto player for destruído vai gerar um nullreferenceexception, e como você ai
- Código:
if (player == null) {
posicao.position = Vector3.Lerp (bat.position,player2.position, Velocidade);
}
ele ainda executara a linha 22 porque ela não esta em um else (caso contrario, se não, blablabla)
tente isso
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SeguirInimigo : MonoBehaviour
{
private Transform player;
private Transform player2;
private Transform whoIAmFollowing;
public float Velocidade = 1.005f;
private void Start()
{
player = GameObject.FindGameObjectWithTag("Player").transform;
player2 = GameObject.FindGameObjectWithTag("Player2").transform;
}
void Update()
{
if (player == null)
whoIAmFollowing = player2;
else
whoIAmFollowing = player;
transform.position = Vector3.Lerp(transform.position, whoIAmFollowing.position, Velocidade);
}
}
Obrigadooo wesleyyy , deu certo amigo, vlw mesmo, nossa postei de manhã o tópico, já achei que não iria ser mais respondido. Me ajudou muito, já estava ficando de cabelo branco por não achar solução rsrs.
hamerom- Membro
- PONTOS : 2800
REPUTAÇÃO : 5
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] ERRO SCRIPT!
» [RESOLVIDO] Erro SCRIPT C# com Objeto (Script need's to derive from MonoBehaviour)
» [RESOLVIDO] Erro estranho num script
» [RESOLVIDO] ERRO , SCRIPT
» [RESOLVIDO] Erro Script
» [RESOLVIDO] Erro SCRIPT C# com Objeto (Script need's to derive from MonoBehaviour)
» [RESOLVIDO] Erro estranho num script
» [RESOLVIDO] ERRO , SCRIPT
» [RESOLVIDO] Erro Script
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos