dano inimigo em player
4 participantes
Página 1 de 1
dano inimigo em player
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Inimigo : MonoBehaviour {
public float vida = 100;
bool chamouMorte = false;
//
public GameObject Jogador;
[Range(1,50)]
public int LimiteDano;
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
gameObject.GetComponent<Controle>().VidaAtual = - LimiteDano;
}
}
void Update () {
if (vida <= 0) {
vida = 0;
if (chamouMorte == false) {
chamouMorte = true;
StartCoroutine ("Morrer");
}
}
}
IEnumerator Morrer(){
GetComponent<MeshRenderer> ().material.color = Color.red;
yield return new WaitForSeconds (2);
Destroy (gameObject);
}
}
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityStandardAssets.Characters.FirstPerson;
public class Controle : MonoBehaviour {
private CharacterController controlador;
private GameObject Jogador;
private float UltimaPosicaoEmY,DistanciaDeQueda;
[Range(1,15)]
public float AlturaQueda = 4,DanoPorMetro = 5 ;
public Image BarraVida, BarraEstamina, BarraFome, BarraSede;
[Range(20,500)]
public float VidaCheia = 100, EstaminaCheia = 100, FomeCheia = 100, SedeCheia = 100,velocidadeEstamina = 250;
[HideInInspector]
public float VidaAtual, EstaminaAtual, FomeAtual, SedeAtual;
private bool semEstamina = false;
private float cronometroFome,cronometroSede,velocidadeCaminhando,velocidadeCorrendo;
public GameObject DIEMenu;
void Start (){
controlador = GetComponent <CharacterController> ();
VidaAtual = VidaCheia;
EstaminaAtual = EstaminaCheia;
FomeAtual = FomeCheia;
SedeAtual = SedeCheia;
Jogador = GameObject.FindWithTag ("Player");
velocidadeCaminhando = Jogador.GetComponent<FirstPersonController> ().m_WalkSpeed;
velocidadeCorrendo = Jogador.GetComponent<FirstPersonController> ().m_RunSpeed;
}
void Update (){
SistemaDeQueda ();
SistemaDeVida ();
SistemaDeEstamina ();
SistemaDeFome ();
SistemaDeSede ();
AplicarBarras ();
}
void SistemaDeQueda(){
if (UltimaPosicaoEmY > Jogador.transform.position.y && controlador.velocity.y < 0) {
DistanciaDeQueda += UltimaPosicaoEmY-Jogador.transform.position.y;
}
UltimaPosicaoEmY = Jogador.transform.position.y;
if (DistanciaDeQueda >= AlturaQueda && controlador.isGrounded) {
VidaAtual = VidaAtual - DanoPorMetro*DistanciaDeQueda;
DistanciaDeQueda = 0;
UltimaPosicaoEmY = 0;
}
if (DistanciaDeQueda < AlturaQueda && controlador.isGrounded) {
DistanciaDeQueda = 0;
UltimaPosicaoEmY = 0;
}
}
void SistemaDeFome(){
FomeAtual -= Time.deltaTime;
if (FomeAtual >= FomeCheia) {
FomeAtual = FomeCheia;
}
if (FomeAtual <= 0) {
FomeAtual = 0;
cronometroFome += Time.deltaTime;
if (cronometroFome >= 3) {
VidaAtual -= (VidaCheia * 0.005f);
EstaminaAtual -= (EstaminaCheia * 0.1f);
cronometroFome = 0;
}
} else {
cronometroFome = 0;
}
}
void SistemaDeSede(){
SedeAtual -= Time.deltaTime;
if (SedeAtual >= SedeCheia) {
SedeAtual = SedeCheia;
}
if (SedeAtual <= 0) {
SedeAtual = 0;
cronometroSede += Time.deltaTime;
if (cronometroSede >= 3) {
EstaminaAtual -= (EstaminaCheia * 0.1f);
cronometroSede = 0;
}
} else {
cronometroSede = 0;
}
}
void SistemaDeEstamina(){
float multEuler = ((1/EstaminaCheia) * EstaminaAtual)*((1/FomeCheia) * FomeAtual);
if (EstaminaAtual >= EstaminaCheia) {
EstaminaAtual = EstaminaCheia;
} else {
EstaminaAtual += Time.deltaTime*(velocidadeEstamina/40)*Mathf.Pow(2.718f,multEuler);
}
if (EstaminaAtual <= 0) {
EstaminaAtual = 0;
Jogador.GetComponent<FirstPersonController> ().m_RunSpeed = velocidadeCaminhando;
semEstamina = true;
}
if (semEstamina == true && EstaminaAtual >= (EstaminaCheia * 0.15f)) {
Jogador.GetComponent<FirstPersonController> ().m_RunSpeed = velocidadeCorrendo;
semEstamina = false;
}
if (Input.GetKey (KeyCode.LeftShift) && semEstamina == false) {
EstaminaAtual -= Time.deltaTime*(velocidadeEstamina/15)*Mathf.Pow(2.718f,multEuler);
}
}
void SistemaDeVida(){
if (VidaAtual >= VidaCheia) {
VidaAtual = VidaCheia;
} else if (VidaAtual <= 0) {
VidaAtual = 0;
Morreu ();
}
}
void AplicarBarras(){
BarraVida.fillAmount = ((1/VidaCheia) * VidaAtual);
BarraEstamina.fillAmount = ((1/EstaminaCheia) * EstaminaAtual);
BarraFome.fillAmount = ((1/FomeCheia) * FomeAtual);
BarraSede.fillAmount = ((1/SedeCheia) * SedeAtual);
}
void Morreu (){
DIEMenu.active = true;
}
public void Sair(){
Application.Quit ();
}
}
estou tentando fazer o inimigo dar dano no player
o script n aponta erros porem nao diminui minha vida, alguem pode me ajudar!
Pkneves- MembroAvançado
- PONTOS : 1267
REPUTAÇÃO : 11
Respeito as regras :
Re: dano inimigo em player
coloque o other.gameObject, se não ele não vai acessar o script que está no player
Re: dano inimigo em player
stratengine escreveu:coloque o other.gameObject, se não ele não vai acessar o script que está no player
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Inimigo : MonoBehaviour {
public float vida = 100;
bool chamouMorte = false;
//
public GameObject Jogador;
[Range(1,50)]
public int LimiteDano;
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
other.gameObject.GetComponent<Controle>().VidaCheia = - LimiteDano;
}
}
void Update () {
if (vida <= 0) {
vida = 0;
if (chamouMorte == false) {
chamouMorte = true;
StartCoroutine ("Morrer");
}
}
}
IEnumerator Morrer(){
GetComponent<MeshRenderer> ().material.color = Color.red;
yield return new WaitForSeconds (2);
Destroy (gameObject);
}
}
eu coloquei porem ainda n ta reduzindo a vida do player
Pkneves- MembroAvançado
- PONTOS : 1267
REPUTAÇÃO : 11
Respeito as regras :
Re: dano inimigo em player
Troque
Por:
- Código:
other.gameObject.GetComponent<Controle>().VidaCheia = - LimiteDano;
Por:
- Código:
other.gameObject.GetComponent<Controle>().VidaCheia -= LimiteDano;
Re: dano inimigo em player
olá acabei de tentar porem ainda nao esta recebendo o danoMayLeone escreveu:Troque
- Código:
other.gameObject.GetComponent<Controle>().VidaCheia = - LimiteDano;
Por:
- Código:
other.gameObject.GetComponent<Controle>().VidaCheia -= LimiteDano;
Pkneves- MembroAvançado
- PONTOS : 1267
REPUTAÇÃO : 11
Respeito as regras :
Re: dano inimigo em player
primeiramente sugiro que faça dois debugs embaixo dessa linha
![dano inimigo em player I86pls4AAAAASUVORK5CYII=](data:image/png;base64,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)
coloque :
Debug.Log("VidaPlayer :" + other.gameObject.GetComponent<Controle>().VidaCheia);
Debug.Log("MeuLimiteDano :" +LimiteDano);
assim verifique em tempo de execução problemas que possam ocorrer:
primeiro> nada acontece, logo entrega que tem algum erro que faz nem acionar o trigger
segundo> debugou os 2 valores mas o que altera não é o que você quer, mostrando erro de cálculo
terceiro> debugou os dois valores corretamente, mostrando que ele não está conseguindo alterar no script original do player
após isso me diga o que ocorreu, grato desde já
coloque :
Debug.Log("VidaPlayer :" + other.gameObject.GetComponent<Controle>().VidaCheia);
Debug.Log("MeuLimiteDano :" +LimiteDano);
assim verifique em tempo de execução problemas que possam ocorrer:
primeiro> nada acontece, logo entrega que tem algum erro que faz nem acionar o trigger
segundo> debugou os 2 valores mas o que altera não é o que você quer, mostrando erro de cálculo
terceiro> debugou os dois valores corretamente, mostrando que ele não está conseguindo alterar no script original do player
após isso me diga o que ocorreu, grato desde já
Re: dano inimigo em player
voce esta usando OnTriggerEnter? como detecçao de colisao, se for o caso uma das 3 opçoes pode tá em falta
1- verificar a tag do player esta como "Player"
2 - ativar/marcar o isTrigger no collisor do player no caso do (OnTriggerEnter)
3- um dos objetos deve ter rigidbody pra collisao ou trigger funcionar,
segundo um teste que fiz contando as correçoes dos amigos funfa d boa,
1- verificar a tag do player esta como "Player"
2 - ativar/marcar o isTrigger no collisor do player no caso do (OnTriggerEnter)
3- um dos objetos deve ter rigidbody pra collisao ou trigger funcionar,
segundo um teste que fiz contando as correçoes dos amigos funfa d boa,
Re: dano inimigo em player
exatamente amigo, isso tudo ai entra como erro no funcionamento do trigger dele, por isso os 3 debugs, para identificar onde foi que está o erro.
Re: dano inimigo em player
bom mudei o colissor istigger d player desmarcado, e do inimigo marcado, só q não está retirando valor certo de dano. no meu limitedano eu deixo 30, no primeiro atack ele calcula certo e retira 30 da vida, já no segundo atack retira 40 ou 20 de dano, além disso não esta dando tempo de um atack de um para o outro atack.stratengine escreveu:exatamente amigo, isso tudo ai entra como erro no funcionamento do trigger dele, por isso os 3 debugs, para identificar onde foi que está o erro.
bom script esta assim até agr
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Inimigo : MonoBehaviour {
public float vida = 100;
bool chamouMorte = false;
//
public GameObject Jogador;
[Range(1,50)]
public int LimiteDano;
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
other.gameObject.GetComponent<Controle>().VidaAtual -= LimiteDano;
Debug.Log("VidaPlayer :" + other.gameObject.GetComponent<Controle>().VidaAtual);
Debug.Log("MeuLimiteDano :" +LimiteDano);
}
}
void Update () {
if (vida <= 0) {
vida = 0;
if (chamouMorte == false) {
chamouMorte = true;
StartCoroutine ("Morrer");
}
}
}
IEnumerator Morrer(){
GetComponent<MeshRenderer> ().material.color = Color.red;
yield return new WaitForSeconds (2);
Destroy (gameObject);
}
}
Pkneves- MembroAvançado
- PONTOS : 1267
REPUTAÇÃO : 11
Respeito as regras :
Re: dano inimigo em player
o script ficou assim
esta com esse erro;
NullReferenceException: Object reference not set to an instance of an object
Inimigo.OnTriggerEnter (UnityEngine.Collider other) (at Assets/Scripts/eay arm/Inimigo.cs:28)
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Inimigo : MonoBehaviour {
public float vida = 100;
bool chamouMorte = false;
private bool podeAtacar;
//
public GameObject Jogador;
[Range(1,50)]
public int LimiteDano = 40;
void Start () {
podeAtacar = true;
Jogador = GameObject.FindWithTag ("Player");
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
if (podeAtacar == true)
{
StartCoroutine ("TempoDeAtaque");
other.gameObject.GetComponent<Controle> ().VidaAtual -= LimiteDano;
Debug.Log ("VidaPlayer :" + other.gameObject.GetComponent<Controle> ().VidaAtual);
Debug.Log ("MeuLimiteDano :" + LimiteDano);
Debug.Log ("tempo :" + StartCoroutine ("TempoDeAtaque"));
}
}
}
void Update () {
if (vida <= 0) {
vida = 0;
if (chamouMorte == false) {
chamouMorte = true;
StartCoroutine ("Morrer");
}
}
}
IEnumerator TempoDeAtaque(){
podeAtacar = false;
yield return new WaitForSeconds (1);
podeAtacar = true;
}
IEnumerator Morrer(){
GetComponent<MeshRenderer> ().material.color = Color.red;
yield return new WaitForSeconds (2);
Destroy (gameObject);
}
}
esta com esse erro;
NullReferenceException: Object reference not set to an instance of an object
Inimigo.OnTriggerEnter (UnityEngine.Collider other) (at Assets/Scripts/eay arm/Inimigo.cs:28)
Pkneves- MembroAvançado
- PONTOS : 1267
REPUTAÇÃO : 11
Respeito as regras :
Re: dano inimigo em player
muito obrigado a tds q ajudaram, os erros sumiram, porem se alguém tiver uma dica para melhorar o sistema pode mandar o código assim
bom ela está retirando a vida do player com os valores certos e dando um tempo entre os atacks do inimigo
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Inimigo : MonoBehaviour {
public float vida = 100;
bool chamouMorte = false;
private bool podeAtacar;
//
public GameObject Jogador;
[Range(1,50)]
public int LimiteDano = 40;
void Start () {
podeAtacar = true;
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
if (podeAtacar == true)
{
StartCoroutine ("TempoDeAtaque");
other.gameObject.GetComponent<Controle> ().VidaAtual -= LimiteDano;
Debug.Log ("VidaPlayer :" + other.gameObject.GetComponent<Controle> ().VidaAtual);
Debug.Log ("MeuLimiteDano :" + LimiteDano);
}
}
}
void Update () {
if (vida <= 0) {
vida = 0;
if (chamouMorte == false) {
chamouMorte = true;
StartCoroutine ("Morrer");
}
}
}
IEnumerator TempoDeAtaque(){
podeAtacar = false;
yield return new WaitForSeconds (1);
podeAtacar = true;
}
IEnumerator Morrer(){
GetComponent<MeshRenderer> ().material.color = Color.red;
yield return new WaitForSeconds (2);
Destroy (gameObject);
}
}
bom ela está retirando a vida do player com os valores certos e dando um tempo entre os atacks do inimigo
Pkneves- MembroAvançado
- PONTOS : 1267
REPUTAÇÃO : 11
Respeito as regras :
![-](https://2img.net/i/empty.gif)
» Como colocar dano no inimigo? e vida no player?
» Inimigo ao encostar morre e player leva dano UNITY 5 2D
» Dano do inimigo
» Ataque e Dano no Inimigo [HELP]
» Ajuda com scripts de inimigo e player'' interação de zumbi e player''
» Inimigo ao encostar morre e player leva dano UNITY 5 2D
» Dano do inimigo
» Ataque e Dano no Inimigo [HELP]
» 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