[ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
+5
arthurunity
thzin
Duarte
Gabriel César O
DuViDoSo
9 participantes
Página 1 de 1
[ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
Olá galerinha.
Vim aqui trazer este script que já me matou de raiva, mas finalmente esta "pronto"(vou melhorá-lo, deixando mais funcional para vocês), bom ele é TODO comentado então não tem muito o que explicar. Mas também deixo com vpcês uma foto de como tudo deve estar no final. beleza vamos lá.
crie um script com nome RIFLE e cole este código:
Bom crie um script chamado TDA e cole o seguinte:(Não está funcionando 100%,(ainda falta a parte de puxar a arma anterior apertando "Q" se você sabe torná-lo funcional, por favor colabore.)
Crie um script chamado VIDA e cole esse código aqui.
Bom, acho que e isso, alguma duvida ou qualquer outra coisa manda pra mim ae nos comentes.
Qualquer erro ou sujestão, entre em contato comigo. [url=wellp.official@gmail.com]wellp.official@gmail.com[/url]
Vim aqui trazer este script que já me matou de raiva, mas finalmente esta "pronto"(vou melhorá-lo, deixando mais funcional para vocês), bom ele é TODO comentado então não tem muito o que explicar. Mas também deixo com vpcês uma foto de como tudo deve estar no final. beleza vamos lá.
crie um script com nome RIFLE e cole este código:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class RIFLE : MonoBehaviour {
[Header("Camera")]
public Transform Cam01;//Serve de base para Apontar a direcao do disparo(eixo z).
public Transform Rec1;//A Saida de bala, deve ficar dentro disto.
bool podeAtirar=true;//Controla o disparo.
[Header("INFO")]
public int danoMin;//Define o dano mínimo causado pelo disparo.
public int danoMax;//Define o dano máximo causado pelo disparo.
public int balasPente = 30;//Número de balas no pente.
public int balasBolso;//Número de balas reservas.
public bool Auto;//Determina se a arma é automatica(segurar e atirar) ou manual(um click, uma bala);
public float TPT = 0.1f; //Tempo de espera entre os disparos.
public float TPR;//Tempo do Recarregamento.
public float Recuo1,Recuo2,TTE;//TTE = tempo pra estabilizar.(não sei se está funcionando como deveria).
public float Alcance;//Distancia máxima do disparo.
int FULL;//Vai ser Igual as balas do pente, apenas para previnir bugs no recarregamento.
int falta,sobra;//Previne bugs no carregamento, não é necessario alterar.
[Header("Audio")]
public AudioClip Disparo;//Som do disparo.
public AudioSource fal;//Responsavel Por emitir o som de disparo.
bool reload = false;//Fala se estou recarregando neste momento.
bool Fire = false;//Fala se estou atirando neste momento.
bool UT;//Fala se esse é o ultimo disparo(não tendo mais munição, nem reserva). Se sim, executa uma animção(sem cartucho, por exemplo).
[Header("UI")]
public Text balas;//Texto responsável por mostrar a quantidade de balas(Usei um texto para mostrar tanto as balas no pente quanto as reservas, pode ser alterado se preferir).
[Header("Animator")]
public Animator A;//Animator, link isto no inspector.
[Header("Particle")]
public GameObject MB;//Particula a ser instanciada,Mais conhecida como "Marca de bala".
[Header("Script")]
public GameObject tda;//Link aqui o objeto que tem o script de troca de arma (TDA);
//---Voids---//
void Awake(){
FULL = balasPente;//aqui nais diz que "FULL" vai receber o valor de "balasPente" antes do 1st frame.
}
void Update(){
//---Recuo(não sei se está 100% funcional)---//
Rec1.Rotate (0, 0, Recuo1);//Rodamos o objeto para tornar o recuo funcional.
Vector3 CAM = new Vector3 (0, 0, 0);
Quaternion Cam02 = Quaternion.Euler (CAM);
//---Volta a Acuracao maxima da arma---//
if (Fire == false) {//se fire for false...
Cam01.rotation = Quaternion.Lerp (transform.rotation, Cam02, TTE);//... Damos a arma a acuracao maxima de volta. Claro que lentamente.
}
if (balasPente == 0 && balasBolso > 0) {//se as balas acabaram, e tem balas reservas....
podeAtirar = false;//deixamos de poder atirar e...
reload = true;//Dizemos que estamos recarregando.
StartCoroutine ("R");//iniciamos a rotina de racarga.
StartCoroutine ("D2");//iniciamos a rotina de animacao de recarga.
tda.gameObject.GetComponent<TDA> ().enabled = false;//Desabilitamos a troca de armas, pra evitar bugs.(você pode alterar para cancelar o "reload" ao invéz disto.
}
if (Fire == true || reload == true) {//se eu estiver atirando ou recarregando...
tda.gameObject.GetComponent<TDA> ().enabled = false;//desbilitamos a troca de armas.
} else {//se nn estivermos...
tda.gameObject.GetComponent<TDA> ().enabled = true;//Torna a troca de armas possível de novo.
}
//apenas para evitar bugs no recarregamento....
sobra = balasPente - FULL;
falta = FULL - balasPente;
if (balasPente > FULL) {
balasBolso += sobra;
balasPente = FULL;
}
if (Input.GetKeyDown (KeyCode.R) && reload == false && balasBolso !=0 && Fire == false) {//Recarregamento...
podeAtirar = false;//Fica falso, assim não podemos atirar enquanto recarregamos.
reload = true;
StartCoroutine ("R");//rotina de recarga.
StartCoroutine ("D2");//anim recarga.
tda.gameObject.GetComponent<TDA> ().enabled = false;//se vc quer tornar possivel a troca de armas durante esse processo, apague essa linha, pode bugar as animaçoes ou a recarga se não for alterado corretamente.
}
balas.text = balasPente.ToString () +" | "+ balasBolso.ToString ();//Transforma os "int" em "string" para encaixar no texto.
RaycastHit colt;//declaramos um "raio" que serve de disparo...
if (Auto == true) {//se a arma for automatica...
if (Input.GetMouseButton (0) && podeAtirar == true && balasPente >= 1) {// e eu apertar o botao esquerdo, e esse script funcionar kk.
if (UT == true) {//ultimo tiro, lembra do que eu disse la atraz? se acha isto bobeira, nada que uma editada aqui e ali nn resolva...
StartCoroutine ("D1");//inicia A Rotina De Ultimo Tiro;
} else {// se nn...
StartCoroutine ("D1");//Inicia a Rotina de disparo normalmente;
}
Fire = true;// ss, estamos atirando!
Cam01.Rotate(Recuo2,0,0);//roda o responsavel pelo disparo, distorcendo a trajetoria e criando um recuo...
balasPente--;//Nós atiramos, entâo, perdemos uma bala.
podeAtirar = false;//Não podemos atirar enquanto estamos atirando.
fal.PlayOneShot (Disparo);//Atirei, então executo um som de disparo.
if (Physics.Raycast (Cam01.transform.position, Cam01.transform.forward, out colt, Alcance)) {//Esta é a linha que executa o disparo.
if (colt.transform.gameObject.GetComponent<VIDA> () != null) {//perguntamos se o atingido tem vida, se tem... dá-le dano.
int dano =Random.Range(danoMin,danoMax);//dizemos um dano aleatoria entre o dano mínino e o máximo, para evitar que o dano seja sempre o mesmo.
colt.transform.gameObject.GetComponent<VIDA> ().hp01 -= dano;//removemos de sua vida o dano.
}
GameObject MT;//Objeto pra instanciar a decal_bullet ou marca de bala.
MT = Instantiate (MB, colt.point, Quaternion.Euler (colt.normal));//instancia onde o raio(disparo) colidiu, e na rotacao do objeto.
Destroy (MT, 1);//depois de um tempo destroi a marca de bala.
Debug.DrawLine (transform.position, colt.point);//para fins estudantis desenha uma linha(vista apenas na unity, não no game. caso queira, apague esta linha sem receio.
}
StartCoroutine ("AT");//iniciamos a rotina que retorna valores booleanos para airar de novo, depois to tempo de recarga.
Debug.Log ("Atirou");//mais fim estudantil. ignore.
}
} else {//se ela não for automatica, será o mesmo processo, porem a arma dá apenas um tiro por click.
if (Input.GetMouseButtonDown (0) && podeAtirar == true && balasPente >= 1) {
Fire = true;
balasPente--;
StartCoroutine ("D1");
podeAtirar = false;
fal.PlayOneShot (Disparo);
if (Physics.Raycast (Cam01.transform.position, Cam01.transform.forward, out colt, 200)) {
if (colt.transform.gameObject.GetComponent<VIDA> () != null) {
int dano =Random.Range(danoMin,danoMax);
colt.transform.gameObject.GetComponent<VIDA> ().hp01 -= dano;
}
Debug.DrawLine (transform.position, colt.point);
}
StartCoroutine ("AT");
Debug.Log ("Atirou");
}
}
}
IEnumerator AT(){//rotina que retorna os valores para atirar novamente.
yield return new WaitForSeconds (TPT);// Tempo entre os disparos.
podeAtirar = true;// posso atirar de novo
Fire = false;// não estou atirando.
StopCoroutine ("AT");//vamos parar essa rotina pra não sobrecarregar e explodir computadores ruins igual ao meu.
}
IEnumerator R(){//Rotina de recarregamento...
yield return new WaitForSeconds (TPR);//tempo de recarga
if (balasBolso >= falta) {//Matematica!
balasBolso -= falta;
balasPente = FULL;
}
if (balasBolso < falta) {
balasPente += balasBolso;
balasBolso = 0;
}
podeAtirar = true;//Posso atirar novamente.
reload = false;//Não estou mais recarregando.
tda.gameObject.GetComponent<TDA> ().enabled = true;//posso trocar de armas novamente.
StopCoroutine ("R");//paramos isso pois consome RAM, nossa precioasa e quase extinta RAM!
}
IEnumerator D1(){//Rotina de Disparo.
A.SetInteger ("1", 1);//Usei esses parametros para iniciar as anim, caso não seja assim, veja o video do Marcos ensinando a usar o Animator.
yield return new WaitForSeconds (TPT);
A.SetInteger ("1", 0);
StopCoroutine ("D1");
}
IEnumerator D2(){//rotina de recarga.
A.SetInteger ("1", 2);
yield return new WaitForSeconds (TPR);
A.SetInteger ("1", 0);
reload = false;
StopCoroutine ("D2");
}
}
//Acabamos, vlw galera.
//@ ALL Riths Free Source! (tipo nada a ver isso ae)
//Use e edite como quiser,mas lembre-se! não roube meus Creditos!!! pois deu um ***** trabalho...
Bom crie um script chamado TDA e cole o seguinte:(Não está funcionando 100%,(ainda falta a parte de puxar a arma anterior apertando "Q" se você sabe torná-lo funcional, por favor colabore.)
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TDA : MonoBehaviour {
[Header("Armas Da Bolsa")]
public GameObject P;//arma primaria.
public GameObject S,F,G;//secundaria, faca e granada.
[Header("Bag")]
public GameObject B;
int LA;
int AA;
void Start () {
LA = 2;
P.SetActive (true);
S.SetActive (false);
F.SetActive (false);
G.SetActive (false);
}
void Update () {
if (Input.GetKeyDown (KeyCode.Alpha1)) {
P.SetActive (true);
S.SetActive (false);
F.SetActive (false);
G.SetActive (false);
}
if (Input.GetKeyDown (KeyCode.Alpha2)) {
AA = 2;
P.SetActive (false);
S.SetActive (true);
F.SetActive (false);
G.SetActive (false);
}
if (Input.GetKeyDown (KeyCode.Alpha3)) {
P.SetActive (false);
S.SetActive (false);
F.SetActive (true);
G.SetActive (false);
}
if (Input.GetKeyDown (KeyCode.Alpha4)) {
P.SetActive (false);
S.SetActive (false);
F.SetActive (false);
G.SetActive (true);
}
//barra-barra//
if (Input.GetKeyDown (KeyCode.Q) && LA == 1) {
P.SetActive (true);
S.SetActive (false);
F.SetActive (false);
G.SetActive (false);
}
if (Input.GetKeyDown (KeyCode.Q) && LA == 2) {
P.SetActive (false);
S.SetActive (true);
F.SetActive (false);
G.SetActive (false);
}
if (Input.GetKeyDown (KeyCode.Q) && LA == 3) {
P.SetActive (false);
S.SetActive (false);
F.SetActive (true);
G.SetActive (false);
}
if (Input.GetKeyDown (KeyCode.Q) && LA == 4) {
P.SetActive (false);
S.SetActive (false);
F.SetActive (false);
G.SetActive (true);
}
}
}
Crie um script chamado VIDA e cole esse código aqui.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class VIDA : MonoBehaviour {
public float hp01 = 100;
public GameObject SerVivo;
void Update(){
if (hp01 <= 0) {
Destroy (SerVivo);
}
}
}
Bom, acho que e isso, alguma duvida ou qualquer outra coisa manda pra mim ae nos comentes.
Qualquer erro ou sujestão, entre em contato comigo. [url=wellp.official@gmail.com]wellp.official@gmail.com[/url]
Última edição por MarcosSchultz em Dom Ago 18, 2019 7:37 pm, editado 2 vez(es) (Motivo da edição : Tive que editar os comentários, pois estavam muito ruins de entender. espero que agora ajude!)
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
nossa amigo! muito top mesmo! parabéns pela sua dedicação e esforço! vai ajudar muita gente mesmo! :affraid:
Gabriel César O- Profissional
- PONTOS : 3738
REPUTAÇÃO : 217
Idade : 22
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
Duarte- Programador
- PONTOS : 3106
REPUTAÇÃO : 97
Idade : 23
Áreas de atuação : Programação
Desenvolvedor Android
Respeito as regras :
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
Opa, obrigado. trarei um tuto mais detalhado assim q possivel.
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
OBAAAA!!!!DuViDoSo escreveu:Opa, obrigado. trarei um tuto mais detalhado assim q possivel.
Gabriel César O- Profissional
- PONTOS : 3738
REPUTAÇÃO : 217
Idade : 22
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
show, muito bom, vai ajudar muita gente...
thzin- Avançado
- PONTOS : 2640
REPUTAÇÃO : 19
Idade : 22
Áreas de atuação : Básico 3ds Max
Básico Maya
Básico Photoshop
Intermediário Blender
Intermediário Unreal Engine
Interm
Respeito as regras :
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
por favor traga um vídeo ensinando a como usar! desde já grato! parabéns pela sua dedicação e esforço!
Gabriel César O- Profissional
- PONTOS : 3738
REPUTAÇÃO : 217
Idade : 22
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
Bom, infelizmente meu PC está em lugar melhor agora, mas quando eu estiver de volta ao jogo, trarei uma serie de tutos pra fazer um fps mmo. Agradeço a compreensão de todos.
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
esses gameobject escrito cam sao camera mesmo ou sao objeto vazio ?
arthurunity- Iniciante
- PONTOS : 2157
REPUTAÇÃO : 0
Respeito as regras :
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
Só uma dica, não fique usando GetComponent toda hora que é bem pesado, faça o cache no Start das componentes e depois apenas acesse elas.
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
MANO nao sei pq mas no meu nao aparece as opçose so aparece o nome tda vida e rifles
Jhonyzin- Iniciante
- PONTOS : 1677
REPUTAÇÃO : 1
Respeito as regras :
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
opa oi vc poderia fazer o sistema de UI de contagem de balas?DuViDoSo escreveu:Bom, infelizmente meu PC está em lugar melhor agora, mas quando eu estiver de volta ao jogo, trarei uma serie de tutos pra fazer um fps mmo. Agradeço a compreensão de todos.
cafezinho71- Avançado
- PONTOS : 1380
REPUTAÇÃO : 5
Áreas de atuação : unity c# e musica
Respeito as regras :
Re: [ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
cara e eu dando risada pq estava usando o mesmo script e me dando dor de cabeça pra colocar um sistema de pegar muniçao do chao e tirar o bug de maximo de muniçao.
Felipe42- Avançado
- PONTOS : 1781
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Script de arma completo! [FREE]
» SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
» Photon Bootcamp Asset completo
» Ajuda com o recuo da arma Jogo de Fps no unity
» FPS Asset package completo
» SCRIPT "MENU" DO MARCOS BLOQUEANDO O USO DE OUTROS SCRIPTS
» Photon Bootcamp Asset completo
» Ajuda com o recuo da arma Jogo de Fps no unity
» FPS Asset package completo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos