[RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
Estou Usando um script de vida para o player e para o inimigo, e coloquei uma checagem q quando a bala colidisse com o inimigo ele remove a vida dele porem a bala tb esta removendo a vida do player.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BulletBehaviour : MonoBehaviour
{
public float speed;
public int damageBullet;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
Destroy(this.gameObject, 5f);
}
void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Enemy" /*|| other.gameObject.tag == "Enemy"*/)
{
other.gameObject.GetComponent<LifeBehaviour>().AddDamage(damageBullet);
Debug.Log(other.gameObject.name);
Destroy(this.gameObject);
}
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class LifeBehaviour : MonoBehaviour
{
public int life = 100;
public static int currentLife;
public Text lifeText;
// Start is called before the first frame update
void Start()
{
currentLife = life;
}
// Update is called once per frame
void Update()
{
lifeText.text = "Vida: " + currentLife.ToString();
if (currentLife >= 100)
{
currentLife = 100;
}else if(currentLife <= 0)
{
currentLife = 0;
Destroy(this.gameObject);
}
}
public void AddDamage(int damage)
{
currentLife -= damage;
}
}
daniel123163- Membro
- PONTOS : 3539
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
No momento não estou podendo testar seu script, mas pelo que vejo é intrigante a questão da variável currentLife ser estática.
- Já tentou usar uma variável não estática:
- Código:
public int currentLife;
Tegh- Avançado
- PONTOS : 2579
REPUTAÇÃO : 97
Idade : 23
Respeito as regras :
Re: [RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
isso e um teste q eu estava fazendo, para tentar arrumar, ai eu esqueci de tirar ela de static.Tegh escreveu:No momento não estou podendo testar seu script, mas pelo que vejo é intrigante a questão da variável currentLife ser estática.
- Já tentou usar uma variável não estática:
- Código:
public int currentLife;
daniel123163- Membro
- PONTOS : 3539
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
Porque Não Cria 2 Objetos Com o Mesmo Script?
Exemplo:
Script Bullet:
Script Life:
Exemplo:
Script Bullet:
- Código:
using UnityEngine;
using UnityEngine.UI;
public class BulletBehaviour : MonoBehaviour
{
//=============== ATRIBUTOS ===============//
public float speed;
public int damageBullet;
public Text lifeText;
public static BulletBehaviour bullet;
public LifeBehaviour Player = new LifeBehaviour();
public LifeBehaviour Monstro = new LifeBehaviour();
//=============== METODOS ===============//
void Start()
{
if (bullet == null)
{
bullet = this;
}
else
{
Destroy(gameObject);
}
//Player
Player.life = 100;
Player.Nome = "Player";
Player.currentLife = Player.life;
//Mostro
Monstro.life = 200;
Monstro.Nome = "Mostro";
Monstro.currentLife = Monstro.life;
}
void Update()
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
Destroy(this.gameObject, 5f);
lifeText.text = "Vida: " + Player.currentLife.ToString();
if (Player.currentLife >= 100)
{
Player.currentLife = 100;
}
else if (Player.currentLife <= 0)
{
Player.currentLife = 0;
Destroy(this.gameObject);
}
}
void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Enemy" /*|| other.gameObject.tag == "Enemy"*/)
{
other.gameObject.GetComponent<LifeBehaviour>().AddDamage(damageBullet, Monstro.Nome);
Debug.Log(other.gameObject.name);
Destroy(this.gameObject);
}
}
}
Script Life:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LifeBehaviour : MonoBehaviour
{
public int life;
public int currentLife;
public string Nome;
public void AddDamage(int damage, string name)
{
if (name == "Player")
{
BulletBehaviour.bullet.Player.currentLife -= damage;
}
else if (name == "Mostro")
{
BulletBehaviour.bullet.Monstro.currentLife -= damage;
}//End_If
}//END
}//End_Class
Magnatah- Instrutor
- PONTOS : 3473
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: [RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
acredito q funcionaria de boa, porem eu quero usar esse script para multiplayer mais para frente, eu n vo usar esses "Enemy" que eu deixei na cena, ele so ta ali para eu checar se o script esta funcionando.Magnatah escreveu:Porque Não Cria 2 Objetos Com o Mesmo Script?
Exemplo:
Script Bullet:
- Código:
using UnityEngine;
using UnityEngine.UI;
public class BulletBehaviour : MonoBehaviour
{
//=============== ATRIBUTOS ===============//
public float speed;
public int damageBullet;
public Text lifeText;
public static BulletBehaviour bullet;
public LifeBehaviour Player = new LifeBehaviour();
public LifeBehaviour Monstro = new LifeBehaviour();
//=============== METODOS ===============//
void Start()
{
if (bullet == null)
{
bullet = this;
}
else
{
Destroy(gameObject);
}
//Player
Player.life = 100;
Player.Nome = "Player";
Player.currentLife = Player.life;
//Mostro
Monstro.life = 200;
Monstro.Nome = "Mostro";
Monstro.currentLife = Monstro.life;
}
void Update()
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
Destroy(this.gameObject, 5f);
lifeText.text = "Vida: " + Player.currentLife.ToString();
if (Player.currentLife >= 100)
{
Player.currentLife = 100;
}
else if (Player.currentLife <= 0)
{
Player.currentLife = 0;
Destroy(this.gameObject);
}
}
void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Enemy" /*|| other.gameObject.tag == "Enemy"*/)
{
other.gameObject.GetComponent<LifeBehaviour>().AddDamage(damageBullet, Monstro.Nome);
Debug.Log(other.gameObject.name);
Destroy(this.gameObject);
}
}
}
Script Life:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LifeBehaviour : MonoBehaviour
{
public int life;
public int currentLife;
public string Nome;
public void AddDamage(int damage, string name)
{
if (name == "Player")
{
BulletBehaviour.bullet.Player.currentLife -= damage;
}
else if (name == "Mostro")
{
BulletBehaviour.bullet.Monstro.currentLife -= damage;
}//End_If
}//END
}//End_Class
daniel123163- Membro
- PONTOS : 3539
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
cara acabei de me ligar q talvez funcione normal no multiplayer, ja q ele vai instanciar vários player (máximo de players = 5 ou 10), então sera q vai funcionar no multiplayer si eu deixar do jeito q já esta ?Magnatah escreveu:Porque Não Cria 2 Objetos Com o Mesmo Script?
Exemplo:
Script Bullet:
- Código:
using UnityEngine;
using UnityEngine.UI;
public class BulletBehaviour : MonoBehaviour
{
//=============== ATRIBUTOS ===============//
public float speed;
public int damageBullet;
public Text lifeText;
public static BulletBehaviour bullet;
public LifeBehaviour Player = new LifeBehaviour();
public LifeBehaviour Monstro = new LifeBehaviour();
//=============== METODOS ===============//
void Start()
{
if (bullet == null)
{
bullet = this;
}
else
{
Destroy(gameObject);
}
//Player
Player.life = 100;
Player.Nome = "Player";
Player.currentLife = Player.life;
//Mostro
Monstro.life = 200;
Monstro.Nome = "Mostro";
Monstro.currentLife = Monstro.life;
}
void Update()
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
Destroy(this.gameObject, 5f);
lifeText.text = "Vida: " + Player.currentLife.ToString();
if (Player.currentLife >= 100)
{
Player.currentLife = 100;
}
else if (Player.currentLife <= 0)
{
Player.currentLife = 0;
Destroy(this.gameObject);
}
}
void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Enemy" /*|| other.gameObject.tag == "Enemy"*/)
{
other.gameObject.GetComponent<LifeBehaviour>().AddDamage(damageBullet, Monstro.Nome);
Debug.Log(other.gameObject.name);
Destroy(this.gameObject);
}
}
}
Script Life:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LifeBehaviour : MonoBehaviour
{
public int life;
public int currentLife;
public string Nome;
public void AddDamage(int damage, string name)
{
if (name == "Player")
{
BulletBehaviour.bullet.Player.currentLife -= damage;
}
else if (name == "Mostro")
{
BulletBehaviour.bullet.Monstro.currentLife -= damage;
}//End_If
}//END
}//End_Class
daniel123163- Membro
- PONTOS : 3539
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
E Esse Erro: "quando a bala colidisse com o inimigo ele remove a vida dele porem a bala tb esta removendo a vida do player."
Magnatah- Instrutor
- PONTOS : 3473
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: [RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
mano removi o static e funciono mds kkkkkkkkkk, vou ficar mais esperto com essas variáveis estáticas de agr pra frente, vlw todo mundo pela ajuda.Tegh escreveu:No momento não estou podendo testar seu script, mas pelo que vejo é intrigante a questão da variável currentLife ser estática.
- Já tentou usar uma variável não estática:
- Código:
public int currentLife;
daniel123163- Membro
- PONTOS : 3539
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
mano consegui arrumar, pelo jeito era a variável currentLife q estava dando esse erro, ela estava em static.Magnatah escreveu:E Esse Erro: "quando a bala colidisse com o inimigo ele remove a vida dele porem a bala tb esta removendo a vida do player."
daniel123163- Membro
- PONTOS : 3539
REPUTAÇÃO : 1
Respeito as regras :
Re: [RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
Disponha, veja alguns conceitos e exemplos sobre classes, métodos e variáveis estáticas para reter um maior conhecimento.
Tegh- Avançado
- PONTOS : 2579
REPUTAÇÃO : 97
Idade : 23
Respeito as regras :
Re: [RESOLVIDO] Problema na hora de retirar vida do inimgo, tb remove a vida do player.
pode deixar , vlw pela ajudaTegh escreveu:Disponha, veja alguns conceitos e exemplos sobre classes, métodos e variáveis estáticas para reter um maior conhecimento.
daniel123163- Membro
- PONTOS : 3539
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» [Resolvido]Problema com player e animação
» fazer o player perde vida e sua barra de vida descer conforme o dano
» [RESOLVIDO] Como retirar esses T que está do local onde tem textos?
» [RESOLVIDO] COMO RETIRAR UMA ANIMAÇAO DE UMA FBX
» Estou com problema na hora de compilar para android
» fazer o player perde vida e sua barra de vida descer conforme o dano
» [RESOLVIDO] Como retirar esses T que está do local onde tem textos?
» [RESOLVIDO] COMO RETIRAR UMA ANIMAÇAO DE UMA FBX
» Estou com problema na hora de compilar para android
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos