[TUTORIAL] Sistema simples de GRANADA e EXPLOSÕES
2 participantes
Página 1 de 1
[TUTORIAL] Sistema simples de GRANADA e EXPLOSÕES
Olá pessoal, lá vamos nós com mais um tutorial... Desta vez, elaborei um sisteminha simples mostrando como fazer um sistema de explosão para granadas (lançar granada e a granada exlodir, lançando os objetos próximos para os lados).
Vídeo Tutorial:
Código da Granada:
Código para lançar granadas:
Vídeo Tutorial:
Código da Granada:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class Granada : MonoBehaviour{
public float tempoParaEstourar = 2;
public float raioDaExplosao = 7;
public float forcaDaExplosao = 7;
public GameObject particulaDeExplosao;
//
float cronometro = 0;
bool explodiu = false;
void Update(){
cronometro += Time.deltaTime;
if (cronometro >= tempoParaEstourar && !explodiu) {
explodiu = true;
cronometro = 0;
Explodir(transform.position, raioDaExplosao);
}
}
void Explodir(Vector3 centro, float raio) {
Collider[] hitColliders = Physics.OverlapSphere(centro, raio);
for (int x = 0; x < hitColliders.Length; x++) {
Rigidbody tempRB = hitColliders[x].GetComponent<Rigidbody>();
if (tempRB) {
tempRB.AddExplosionForce(forcaDaExplosao, transform.position, 10, 1, ForceMode.Impulse);
}
}
//
if (particulaDeExplosao) {
GameObject particula = Instantiate(particulaDeExplosao, transform.position, transform.rotation) as GameObject;
Destroy(particula, 1);
}
Destroy(this.gameObject);
}
}
Código para lançar granadas:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LancarGranadas : MonoBehaviour{
public Granada _granada;
public Transform localDeLancamento;
public float forcaDeLancamento = 10;
public float numeroDeGranadas = 10;
public float tempoPorLancamento = 0.5f;
//
float cronometroGranada = 0;
bool lancouGranada = false;
void Update(){
if (Input.GetKeyDown(KeyCode.G)) {
if (localDeLancamento && numeroDeGranadas >= 0 && !lancouGranada) {
numeroDeGranadas--;
lancouGranada = true;
Granada objGranada = Instantiate(_granada, localDeLancamento.position, transform.rotation) as Granada;
Rigidbody rbGranada = objGranada.GetComponent<Rigidbody>();
rbGranada.AddForce(Camera.main.transform.forward * forcaDeLancamento, ForceMode.Impulse);
}
}
if (lancouGranada) {
cronometroGranada += Time.deltaTime;
}
if (cronometroGranada >= tempoPorLancamento) {
lancouGranada = false;
cronometroGranada = 0;
}
}
}
Última edição por MarcosSchultz em Dom Jun 30, 2019 1:57 pm, editado 1 vez(es)
Re: [TUTORIAL] Sistema simples de GRANADA e EXPLOSÕES
Esse script vai me ajudar com umas ideias que tive, Como por exemplo:
Em um game de RPG esse Script ajudaria com magias que contem explosão.
Em um game de RPG esse Script ajudaria com magias que contem explosão.
Magnatah- Instrutor
- PONTOS : 3357
REPUTAÇÃO : 208
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 :
Tópicos semelhantes
» [TUTORIAL] Sistema simples para lançar objetos.
» [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D
» [TUTORIAL] Sistema Simples de Falas
» [TUTORIAL] Sistema de Lanterna Simples sem bateria
» [TUTORIAL] Sistema de câmera em primeira pessoa SIMPLES
» [TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D
» [TUTORIAL] Sistema Simples de Falas
» [TUTORIAL] Sistema de Lanterna Simples sem bateria
» [TUTORIAL] Sistema de câmera em primeira pessoa SIMPLES
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos