[RESOLVIDO] Score ao matar inimigo
5 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Score ao matar inimigo
OLA PESSOAL EU QUERIA UM SCRIPT PARA DA SCORE AO MATAR O INIMIGO 10 SCORE QUE APERECIRIA NA TELA ATRAVES DE UMA IMAGE UI
AGRADEÇO DESDE JÁ!
AGRADEÇO DESDE JÁ!
Última edição por MarcosSchultz em Ter maio 16, 2017 5:40 pm, editado 2 vez(es) (Motivo da edição : Resolvido)
Re: [RESOLVIDO] Score ao matar inimigo
3 - O fórum é para resolução de dúvidas, portanto, venham com dúvidas. Pedir scripts prontos ou resoluções milagrosas sem querer aprender, apenas levará o usuário a ser ignorado posteriormente.
Você já tem algo pronto?
Você já tem algo pronto?
rafaelllsd- ProgramadorMaster
- PONTOS : 5242
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [RESOLVIDO] Score ao matar inimigo
Amigo.. Eu não posso fazer scripts agora porque to num projeto aqui.. Mais só uma dica.. Tenta aprender a fazer sozinho.. Você vai agregar mais sabe? Quando mais voce tenta, mais independente você fica e ganha 10x mais experiencia com isso. Tipo.. Tenta bolar uma lógica sabe? De quando o inimigo chegar a 0 de vida, ele adiciona 10 pontos, e em seguida ele se destroy,, tipo isso..
Re: [RESOLVIDO] Score ao matar inimigo
Player Script:
Bala Script:
Inimigo script:
Não testei mas deve funcionar!!!
- Código:
//Tiro
public GameObject bala;
public float velocidade;
public Transform arma;
Rigidbody rbbala;
Bala ba; //SCRIPT BALA
GameObject My;//Player atual
public float Score;
void Start(){
My = gameObject;//Nao sei se isso ta certo
}
void Update(){
if(Input.GetKey(KeyCode.Mouse0)){ //ATIRAR APERTANDO O BOTÃO DO MOUSE
clone = Instantiate(bala,arma.position,arma.rotation) as GameObject;
ba = clone.GetComponent<Bala>();//PEGAR "BALA" SCRIPT
ba.player = My;
rbbala = clone.GetComponent<Rigidbody> ();
rbbala.AddRelativeForce(Vector3.forward * velocidade);
}
}
Bala Script:
- Código:
public GameObject player;
void Update(){
}
Inimigo script:
- Código:
Bala ba;
GameObject player;
Player pla;
void Update(){
}
void OnCollisionEnter(Collision col){
if(col.tag == "bala"){ //SE O OBJETO TIVER A TAG BALA
ba = col.GetComponent<Bala>();//PEGAR "BALA" SCRIPT
player = GameObject.Find(ba.player.name);
pla = player.GetComponent<Player>();//PEGAR "PLAYER" SCRIPT
pla.Score += 10;
}
}
Não testei mas deve funcionar!!!
Re: [RESOLVIDO] Score ao matar inimigo
Script do Inimigo
Script do Score
Os score nao estao aumentando nao sei porque, e nao esta dando error nenhum
- Código:
using UnityEngine;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Death ();
}
}
void Death ()
{
isDead = true;
capsuleCollider.isTrigger = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
ScoreManager.score += scoreValue;
Destroy (gameObject, 2f);
}
}
Script do Score
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
namespace CompleteProject
{
public class ScoreManager : MonoBehaviour
{
public static int score;
Text text;
void Awake ()
{
text = GetComponent <Text> ();
score = 0;
}
void Update ()
{
text.text = "Score: " + score;
}
}
}
Os score nao estao aumentando nao sei porque, e nao esta dando error nenhum
Re: [RESOLVIDO] Score ao matar inimigo
É so fazer dentro do void Death isso:
- Código:
ScoreManager.score++;
- Código:
using CompleteProject;
Re: [RESOLVIDO] Score ao matar inimigo
nao foi, esta aparecendo o score na tela mais quando mato o inimigo o score nao aumenta!
Re: [RESOLVIDO] Score ao matar inimigo
certo poste a modificação que voce fez aki e se deu algum erro poste tambem.
Re: [RESOLVIDO] Score ao matar inimigo
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.SceneManagement;
using UnityStandardAssets;
using UnityStandardAssets.Characters.FirstPerson;
using CompleteProject;
public class PlayerHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public Slider healthSlider;
public Image damageImage;
public AudioClip deathClip;
public float flashSpeed = 5f;
public Color flashColour = new Color(1f, 0f, 0f, 0.1f);
Animator anim;
AudioSource playerAudio;
FirstPersonController playerMovement;
PlayerShooting playerShooting;
bool isDead;
bool damaged;
void Awake ()
{
anim = GetComponent <Animator> ();
playerAudio = GetComponent <AudioSource> ();
playerMovement = GetComponent <FirstPersonController> ();
playerShooting = GetComponentInChildren <PlayerShooting> ();
currentHealth = startingHealth;
}
void Update ()
{
if(damaged)
{
damageImage.color = flashColour;
}
else
{
damageImage.color = Color.Lerp (damageImage.color, Color.clear, flashSpeed * Time.deltaTime);
}
damaged = false;
}
public void TakeDamage (int amount)
{
damaged = true;
currentHealth -= amount;
healthSlider.value = currentHealth;
playerAudio.Play ();
if(currentHealth <= 0 && !isDead)
{
Death ();
}
}
void Death ()
{
isDead = true;
playerShooting.DisableEffects ();
anim.SetTrigger ("Die");
playerAudio.clip = deathClip;
playerAudio.Play ();
playerMovement.enabled = false;
playerShooting.enabled = false;
ScoreManager.score++;
}
public void RestartLevel ()
{
SceneManager.LoadScene (0);
}
}
Manawydan escreveu:certo poste a modificação que voce fez aki e se deu algum erro poste tambem.
Re: [RESOLVIDO] Score ao matar inimigo
- Código:
using UnityEngine;
using CompleteProject;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Death ();
}
}
void Death ()
{
isDead = true;
capsuleCollider.isTrigger = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
ScoreManager.score++;
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
ScoreManager.score += scoreValue;
Destroy (gameObject, 2f);
}
}
continua sem aumentar
Re: [RESOLVIDO] Score ao matar inimigo
Certo nao vi nenhum erro aparente, então o erro ser pq o metodo de tirar vida (TakeDamage) não esta sendo executado, no seu script de bala voce pode usar um OnTriggerEnter e verificar se o objeto que colidiu tem a tag Enemy para então pegar o componente EnemyHealth e executar o metodo TakeDamage.
Re: [RESOLVIDO] Score ao matar inimigo
- Código:
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
namespace CompleteProject
{
public class PlayerShooting : MonoBehaviour
{
public int damagePerShot = 20; // The damage inflicted by each bullet.
public float timeBetweenBullets = 0.15f; // The time between each shot.
public float range = 100f; // The distance the gun can fire.
float timer; // A timer to determine when to fire.
Ray shootRay = new Ray(); // A ray from the gun end forwards.
RaycastHit shootHit; // A raycast hit to get information about what was hit.
int shootableMask; // A layer mask so the raycast only hits things on the shootable layer.
ParticleSystem gunParticles; // Reference to the particle system.
LineRenderer gunLine; // Reference to the line renderer.
AudioSource gunAudio; // Reference to the audio source.
Light gunLight; // Reference to the light component.
public Light faceLight; // Duh
float effectsDisplayTime = 0.2f; // The proportion of the timeBetweenBullets that the effects will display for.
void Awake ()
{
// Create a layer mask for the Shootable layer.
shootableMask = LayerMask.GetMask ("Shootable");
// Set up the references.
gunParticles = GetComponent<ParticleSystem> ();
gunLine = GetComponent <LineRenderer> ();
gunAudio = GetComponent<AudioSource> ();
gunLight = GetComponent<Light> ();
//faceLight = GetComponentInChildren<Light> ();
}
void Update ()
{
// Add the time since Update was last called to the timer.
timer += Time.deltaTime;
#if !MOBILE_INPUT
// If the Fire1 button is being press and it's time to fire...
if(Input.GetButton ("Fire1") && timer >= timeBetweenBullets && Time.timeScale != 0)
{
// ... shoot the gun.
Shoot ();
}
#else
// If there is input on the shoot direction stick and it's time to fire...
if ((CrossPlatformInputManager.GetAxisRaw("Mouse X") != 0 || CrossPlatformInputManager.GetAxisRaw("Mouse Y") != 0) && timer >= timeBetweenBullets)
{
// ... shoot the gun
Shoot();
}
#endif
// If the timer has exceeded the proportion of timeBetweenBullets that the effects should be displayed for...
if(timer >= timeBetweenBullets * effectsDisplayTime)
{
// ... disable the effects.
DisableEffects ();
}
}
public void DisableEffects ()
{
// Disable the line renderer and the light.
gunLine.enabled = false;
faceLight.enabled = false;
gunLight.enabled = false;
}
void Shoot ()
{
// Reset the timer.
timer = 0f;
// Play the gun shot audioclip.
gunAudio.Play ();
// Enable the lights.
gunLight.enabled = true;
faceLight.enabled = true;
// Stop the particles from playing if they were, then start the particles.
gunParticles.Stop ();
gunParticles.Play ();
// Enable the line renderer and set it's first position to be the end of the gun.
gunLine.enabled = true;
gunLine.SetPosition (0, transform.position);
// Set the shootRay so that it starts at the end of the gun and points forward from the barrel.
shootRay.origin = transform.position;
shootRay.direction = transform.forward;
// Perform the raycast against gameobjects on the shootable layer and if it hits something...
if(Physics.Raycast (shootRay, out shootHit, range, shootableMask))
{
// Try and find an EnemyHealth script on the gameobject hit.
EnemyHealth enemyHealth = shootHit.collider.GetComponent <EnemyHealth> ();
// If the EnemyHealth component exist...
if(enemyHealth != null)
{
// ... the enemy should take damage.
enemyHealth.TakeDamage (damagePerShot, shootHit.point);
}
// Set the second position of the line renderer to the point the raycast hit.
gunLine.SetPosition (1, shootHit.point);
}
// If the raycast didn't hit anything on the shootable layer...
else
{
// ... set the second position of the line renderer to the fullest extent of the gun's range.
gunLine.SetPosition (1, shootRay.origin + shootRay.direction * range);
}
}
}
}
Manawydan escreveu:Certo nao vi nenhum erro aparente, então o erro ser pq o metodo de tirar vida (TakeDamage) não esta sendo executado, no seu script de bala voce pode usar um OnTriggerEnter e verificar se o objeto que colidiu tem a tag Enemy para então pegar o componente EnemyHealth e executar o metodo TakeDamage.
Re: [RESOLVIDO] Score ao matar inimigo
Ok mais coisas pra verificar, os Enemy estão na layer "Shootable"?
Quando voce não sabe ao certo onde esta o erro, uma boa idia seria usar print pra mostrar um mensagem na tela caso tal pedaço de codigo esta funcionando certinho.
Quando voce não sabe ao certo onde esta o erro, uma boa idia seria usar print pra mostrar um mensagem na tela caso tal pedaço de codigo esta funcionando certinho.
- Código:
if(Physics.Raycast (shootRay, out shootHit, range, shootableMask))
{
print("Detectou Raycast em Algo ok");
// Try and find an EnemyHealth script on the gameobject hit.
EnemyHealth enemyHealth = shootHit.collider.GetComponent <EnemyHealth> ();
// If the EnemyHealth component exist...
if(enemyHealth != null)
{
print("Enemy detectado ok, deveria sofre dano");
// ... the enemy should take damage.
enemyHealth.TakeDamage (damagePerShot, shootHit.point);
}
// Set the second position of the line renderer to the point the raycast hit.
gunLine.SetPosition (1, shootHit.point);
}
Re: [RESOLVIDO] Score ao matar inimigo
sim os inimigos estão na layer "Shootable".Manawydan escreveu:Ok mais coisas pra verificar, os Enemy estão na layer "Shootable"?
Quando voce não sabe ao certo onde esta o erro, uma boa idia seria usar print pra mostrar um mensagem na tela caso tal pedaço de codigo esta funcionando certinho.Verifique qual das mensagens aparece no console.
- Código:
if(Physics.Raycast (shootRay, out shootHit, range, shootableMask))
{
print("Detectou Raycast em Algo ok");
// Try and find an EnemyHealth script on the gameobject hit.
EnemyHealth enemyHealth = shootHit.collider.GetComponent <EnemyHealth> ();
// If the EnemyHealth component exist...
if(enemyHealth != null)
{
print("Enemy detectado ok, deveria sofre dano");
// ... the enemy should take damage.
enemyHealth.TakeDamage (damagePerShot, shootHit.point);
}
// Set the second position of the line renderer to the point the raycast hit.
gunLine.SetPosition (1, shootHit.point);
}
fiz a modificaçao e nao apareceu nenhum error no console
Re: [RESOLVIDO] Score ao matar inimigo
Up!
ja tentei de todo jeito nao conseguir fazer esse sistema de score me ajudem por favor!
ja tentei de todo jeito nao conseguir fazer esse sistema de score me ajudem por favor!
Re: [RESOLVIDO] Score ao matar inimigo
tentei utilizar mais deus erros no console.Matrirxp escreveu:Voce tento a que eu te passei
!!!!!!!!!!!!!!!!!
e o meu projeto nao da spawn em uma bala, tem o script acima do meu tiro
Re: [RESOLVIDO] Score ao matar inimigo
Tiro
Player:
Inimigo:
Score:
- Código:
using UnityEngine;
public class PlayerShooting : MonoBehaviour
{
public int damagePerShot = 20;
public float timeBetweenBullets = 0.15f;
public float range = 100f;
float timer;
Ray shootRay = new Ray();
RaycastHit shootHit;
int shootableMask;
ParticleSystem gunParticles;
LineRenderer gunLine;
AudioSource gunAudio;
Light gunLight;
float effectsDisplayTime = 0.2f;
private bool TocouEmAtirar;
void Awake()
{
shootableMask = LayerMask.GetMask("Shootable");
gunParticles = GetComponent<ParticleSystem>();
gunLine = GetComponent<LineRenderer>();
gunAudio = GetComponent<AudioSource>();
gunLight = GetComponent<Light>();
}
void Update()
{
timer += Time.deltaTime;
if (TocouEmAtirar == true && timer >= timeBetweenBullets && Time.timeScale != 0) //Aqui eu troquei o Input.GetKey pela nossa nova variavel
{
Shoot();
}
if (timer >= timeBetweenBullets * effectsDisplayTime)
{
DisableEffects();
}
}
public void DisableEffects()
{
gunLine.enabled = false;
gunLight.enabled = false;
}
void Shoot()
{
timer = 0f;
gunAudio.Play();
gunLight.enabled = true;
gunParticles.Stop();
gunParticles.Play();
gunLine.enabled = true;
gunLine.SetPosition(0, transform.position);
shootRay.origin = transform.position;
shootRay.direction = transform.forward;
if (Physics.Raycast(shootRay, out shootHit, range, shootableMask))
{
EnemyHealth enemyHealth = shootHit.collider.GetComponent<EnemyHealth>();
if (enemyHealth != null)
{
enemyHealth.TakeDamage(damagePerShot, shootHit.point);
}
gunLine.SetPosition(1, shootHit.point);
}
else
{
gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range);
}
}
public void RecebeToque(bool transmissor) //Esse public void, vai receber os dados do seu botão da UI
{
TocouEmAtirar = transmissor;
}
}
Player:
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.SceneManagement;
using UnityStandardAssets;
using UnityStandardAssets.Characters.FirstPerson;
public class PlayerHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public Slider healthSlider;
public Image damageImage;
public AudioClip deathClip;
public float flashSpeed = 5f;
public Color flashColour = new Color(1f, 0f, 0f, 0.1f);
Animator anim;
AudioSource playerAudio;
FirstPersonController playerMovement;
PlayerShooting playerShooting;
bool isDead;
bool damaged;
void Awake ()
{
anim = GetComponent <Animator> ();
playerAudio = GetComponent <AudioSource> ();
playerMovement = GetComponent <FirstPersonController> ();
playerShooting = GetComponentInChildren <PlayerShooting> ();
currentHealth = startingHealth;
}
void Update ()
{
if(damaged)
{
damageImage.color = flashColour;
}
else
{
damageImage.color = Color.Lerp (damageImage.color, Color.clear, flashSpeed * Time.deltaTime);
}
damaged = false;
}
public void TakeDamage (int amount)
{
damaged = true;
currentHealth -= amount;
healthSlider.value = currentHealth;
playerAudio.Play ();
if(currentHealth <= 0 && !isDead)
{
Death ();
}
}
void Death ()
{
isDead = true;
playerShooting.DisableEffects ();
anim.SetTrigger ("Die");
playerAudio.clip = deathClip;
playerAudio.Play ();
playerMovement.enabled = false;
playerShooting.enabled = false;
}
public void RestartLevel ()
{
SceneManager.LoadScene (1);
}
}
Inimigo:
- Código:
using UnityEngine;
using CompleteProject;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Death ();
}
}
void Death ()
{
isDead = true;
capsuleCollider.isTrigger = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
ScoreManager.score++;
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
ScoreManager.score += scoreValue;
Destroy (gameObject, 2f);
}
}
Score:
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
public static int score;
Text text;
void Awake ()
{
text = GetComponent <Text> ();
score = 0;
}
void Update ()
{
text.text = "Score: " + score;
}
}
Re: [RESOLVIDO] Score ao matar inimigo
Como não estou conseguindo ver o erro tentaria por prints para debugar cada bloco de codigo pra saber o que esta sendo executado e o que não ta.
O metodo TakeDamage do Inimigo é executado? ele perde vida? o som dele é tocado?
Quanto mais informações nos passar mais facil sera tentarmos ajudar.
O metodo TakeDamage do Inimigo é executado? ele perde vida? o som dele é tocado?
Quanto mais informações nos passar mais facil sera tentarmos ajudar.
Re: [RESOLVIDO] Score ao matar inimigo
Simm, ele perde vida, o som é tocado, as particulas sao ativadas, ele ataca o player e mata o player, ele so nao da o "score" e o corpo dele nao é destruidoManawydan escreveu:Como não estou conseguindo ver o erro tentaria por prints para debugar cada bloco de codigo pra saber o que esta sendo executado e o que não ta.
O metodo TakeDamage do Inimigo é executado? ele perde vida? o som dele é tocado?
Quanto mais informações nos passar mais facil sera tentarmos ajudar.
Re: [RESOLVIDO] Score ao matar inimigo
Tente isso:
Inimigo:
Se não funcionar diga se os prints são exibidos no console.
Inimigo:
- Código:
using UnityEngine;
using CompleteProject;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Death ();
}
}
void Death ()
{
print("Death ok");
currentHealth = 0;// setamos a vida pra 0 pra nao ficar negativa
isDead = true;
capsuleCollider.isTrigger = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
// executamos o metodo StartSinking que não estava sendo usado
StartSinking();
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
ScoreManager.score += scoreValue;
ScoreManager sm = (ScoreManager)FindObjectOfType(typeof(ScoreManager));
sm.AddScore(scoreValue);
Destroy (gameObject, 2f);
}
}
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
int score;
Text text;
void Awake ()
{
text = GetComponent <Text> ();
score = 0;
}
void Update ()
{
text.text = "Score: " + score;
}
public void AddScore(int ammount)
{
print("AddScore ok");
score += ammount;
}
}
Se não funcionar diga se os prints são exibidos no console.
Re: [RESOLVIDO] Score ao matar inimigo
- Código:
using UnityEngine;
using CompleteProject;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
ScoreManager sm;
GameObject ScoreGameObject;//Coloca o GameObject onde o ScoreManager esta
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
sm = ScoreGameObject.GetComponent<ScoreManager>():
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Death ();
}
}
void Death ()
{
print("Death ok");
currentHealth = 0;// setamos a vida pra 0 pra nao ficar negativa
isDead = true;
capsuleCollider.isTrigger = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
// executamos o metodo StartSinking que não estava sendo usado
StartSinking();
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
sm.score += scoreValue;
sm.AddScore(scoreValue);
Destroy (gameObject, 2f);
}
}
Re: [RESOLVIDO] Score ao matar inimigo
- Código:
using UnityEngine;
using System.Collections;
namespace CompleteProject
{
public class ScoreManager : MonoBehaviour
{
public int score;
public UnityEngine.UI.Text text;//coloca a label(Text UI) aqui
void Update ()
{
text.text = "Score: " + score;
}
}
}
Re: [RESOLVIDO] Score ao matar inimigo
- Código:
using UnityEngine;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
public int score;
public UnityEngine.UI.Text text;//coloca a label(Text UI) aqui
void Update ()
{
text.text = "Score: " + score;
}
}
Re: [RESOLVIDO] Score ao matar inimigo
- Código:
using UnityEngine;
using CompleteProject;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
ScoreManager sm;
GameObject ScoreGameObject;//Coloca o GameObject onde o ScoreManager esta
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
sm = ScoreGameObject.GetComponent<ScoreManager>():
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Death ();
}
}
void Death ()
{
print("Death ok");
currentHealth = 0;// setamos a vida pra 0 pra nao ficar negativa
isDead = true;
capsuleCollider.isTrigger = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
// executamos o metodo StartSinking que não estava sendo usado
StartSinking();
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
sm.score += scoreValue;
Destroy (gameObject, 2f);
}
}
Re: [RESOLVIDO] Score ao matar inimigo
- Código:
using UnityEngine;
using CompleteProject;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
ScoreManager sm;
public GameObject ScoreGameObject;//Coloca o GameObject onde o ScoreManager esta ||||| SETA ISSOOOOOOOOO
piblic GameObject Inimigo;//Inimigo ||||||||||||||||| ISSO TBM
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
sm = ScoreGameObject.GetComponent<ScoreManager>():
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Death ();
}
}
void Death ()
{
print("Death ok");
currentHealth = 0;// setamos a vida pra 0 pra nao ficar negativa
isDead = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
// executamos o metodo StartSinking que não estava sendo usado
StartSinking();
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
sm.score += scoreValue;
Destroy (Inimigo);
}
}
Re: [RESOLVIDO] Score ao matar inimigo
VLWW MEU AMIGO MUITO OBRIGADO MESMO FUNCIONOU! :D :D :D
SO QUE QUANDO ELE MORRE TA DESAPARECENDO IMEDIATAMENTE NAO TA NEM FAZENDO A ANIMAÇAO "Dead"!
MAIS OBRIGADO !
SO QUE QUANDO ELE MORRE TA DESAPARECENDO IMEDIATAMENTE NAO TA NEM FAZENDO A ANIMAÇAO "Dead"!
MAIS OBRIGADO !
Re: [RESOLVIDO] Score ao matar inimigo
- Código:
using UnityEngine;
using CompleteProject;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
ScoreManager sm;
public GameObject ScoreGameObject;//Coloca o GameObject onde o ScoreManager esta ||||| SETA ISSOOOOOOOOO
piblic GameObject Inimigo;//Inimigo ||||||||||||||||| ISSO TBM
public float DelayDeath;//Daley para a destroy do inimigo
float Ctime;
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
sm = ScoreGameObject.GetComponent<ScoreManager>():
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Death ();
}
}
void Death ()
{
print("Death ok");
currentHealth = 0;// setamos a vida pra 0 pra nao ficar negativa
isDead = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
// executamos o metodo StartSinking que não estava sendo usado
StartSinking();
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
sm.score += scoreValue;
Ctime += 1 * Time.deltaTime;
if(Ctime == DelayDeath){
Destroy (Inimigo);
}
}
}
Tenta isso
Re: [RESOLVIDO] Score ao matar inimigo
FUNCIONOU AGORA TEM UM TEMPINHO ANTES DELE DESTRUIR, QUE ERROR É ESSE?
Re: [RESOLVIDO] Score ao matar inimigo
EI ESTOU COM UM PROBLEMINHA O PREFAB DO MEU INIMIGO NAO FICA NA SCENA PORQUE ELE TEM SPAWN E NAO CONSIGO LINKAR O PUBLIC GameObject onde o ScoreManager ESTA
DEU PARA ENTENDER??
DEU PARA ENTENDER??
Re: [RESOLVIDO] Score ao matar inimigo
CONSEGUI JÁ MEU AMIGO, MUITO OBRIGADO PELA AJUDA VOU DEIXAR O SCRIPT ABAIXO VAI QUE AJUDA ALGUEM:
- Código:
using UnityEngine;
using CompleteProject;
using UnityEngine.UI;
using System.Collections;
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100;
public int currentHealth;
public float sinkSpeed = 2.5f;
public int scoreValue = 10;
public AudioClip deathClip;
Animator anim;
AudioSource enemyAudio;
ParticleSystem hitParticles;
CapsuleCollider capsuleCollider;
bool isDead;
bool isSinking;
ScoreManager sm;
public GameObject ScoreGameObject;//Coloca o GameObject onde o ScoreManager esta ||||| SETA ISSOOOOOOOOO
public GameObject Inimigo; //Inimigo ||||||||||||||||| ISSO TBM
public float DelayDeath;//Daley para a destroy do inimigo
float Ctime;
void Start ()
{
StartCoroutine ("Timer");
if (ScoreGameObject == null) {
ScoreGameObject = GameObject.FindWithTag ("ScoreGameObject");
}
}
void Awake ()
{
anim = GetComponent <Animator> ();
enemyAudio = GetComponent <AudioSource> ();
hitParticles = GetComponentInChildren <ParticleSystem> ();
capsuleCollider = GetComponent <CapsuleCollider> ();
currentHealth = startingHealth;
}
void Update ()
{
if(isSinking)
{
transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
}
}
public void TakeDamage (int amount, Vector3 hitPoint)
{
if(isDead)
return;
enemyAudio.Play ();
currentHealth -= amount;
hitParticles.transform.position = hitPoint;
hitParticles.Play();
if(currentHealth <= 0)
{
Destroir ();
Death ();
}
}
void Death ()
{
//print("Death ok");
currentHealth = 0;// setamos a vida pra 0 pra nao ficar negativa
isDead = true;
anim.SetTrigger ("Dead");
enemyAudio.clip = deathClip;
enemyAudio.Play ();
// executamos o metodo StartSinking que não estava sendo usado
StartSinking();
}
public void StartSinking ()
{
GetComponent <UnityEngine.AI.NavMeshAgent> ().enabled = false;
GetComponent <Rigidbody> ().isKinematic = true;
isSinking = true;
sm.score += scoreValue;
}
IEnumerator Timer () {
yield return new WaitForSeconds (0.1f);
sm = ScoreGameObject.GetComponent<ScoreManager> ();
}
public void Destroir () {
Ctime += 1 * Time.deltaTime;
if (Ctime >= DelayDeath) {
Destroy (Inimigo, 3);
}
}
}
Tópicos semelhantes
» [RESOLVIDO] Ajuda com script para matar Inimigo no Jogo
» Personagem não sair da tela
» Matar inimigo
» INIMIGO MATAR O PLAYER
» Personagem matar inimigo
» Personagem não sair da tela
» Matar inimigo
» INIMIGO MATAR O PLAYER
» Personagem matar inimigo
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos