Alcance de Ataque
3 participantes
Página 1 de 1
Alcance de Ataque
Eu queria saber como fazer um alcance pro ataque do meu personagem
Renan Arruda- Membro
- PONTOS : 3342
REPUTAÇÃO : 3
Idade : 28
Respeito as regras :
Re: Alcance de Ataque
Como assim , tipo ele so pode atacar se estiver perto?
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: Alcance de Ataque
Quando for criar tópicos, por favor, seja mais específico. dê exemplos.
Assim como está não consigo nem saber direito o tipo de sistema que você está tentando fazer
Assim como está não consigo nem saber direito o tipo de sistema que você está tentando fazer
Re: Alcance de Ataque
Eu quero que o inimigo receba dano se meu personagem estiver perto o suficiente do inimigo ao atacar
Renan Arruda- Membro
- PONTOS : 3342
REPUTAÇÃO : 3
Idade : 28
Respeito as regras :
Re: Alcance de Ataque
Já tem algum sistema de ataque pronto?
Tem algum sistema para vida do inimigo pronto?
Já utilizou Vector3.Distance?(é este metodo que vamos utilizar)
Tem que ter os 2 primeiros sistemas prontos. Fazer a implementação do Vector3.Distance é facil
Tem algum sistema para vida do inimigo pronto?
Já utilizou Vector3.Distance?(é este metodo que vamos utilizar)
Tem que ter os 2 primeiros sistemas prontos. Fazer a implementação do Vector3.Distance é facil
Re: Alcance de Ataque
Sim já tenho os dois sistemas.
Ainda não tentei usar esse método.
Ainda não tentei usar esse método.
Renan Arruda- Membro
- PONTOS : 3342
REPUTAÇÃO : 3
Idade : 28
Respeito as regras :
Re: Alcance de Ataque
- Código:
using UnityEngine;
using System.Collections;
public class ObjectDestructive : Destructive {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.T)){
ApplyDamage(3);
}
}
public override void OnDestroyed ()
{
Destroy(gameObject);
}
}
- Código:
using UnityEngine;
using System.Collections;
public abstract class Destructive : MonoBehaviour {
public float currentLife;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void ApplyDamage(int damage){
currentLife -= damage;
if(currentLife <= 0){
OnDestroyed();
}
}
public abstract void OnDestroyed();
}
Renan Arruda- Membro
- PONTOS : 3342
REPUTAÇÃO : 3
Idade : 28
Respeito as regras :
Re: Alcance de Ataque
Ok, temos um pequeno problema de lógica aqui...
você tem uma void publica
e no script que acredito estar no seu Player você tem esse comando:
Então se você chamar a função "ApplyDamage", todos os objetos que contem o script com esta função, irão sofrer o efeito.
Nestes casos eu costumo utilizar alguns parametros para detectar qual é o objeto que está proximo, por exemplo:
OnTriggerEnter(Collider other)
ou
Raycast - hit
ou
Linecast - hit
destas formas, você pode dizer que o hit.script.variavel vai ser reduzido, e não irá aplicar o dano a todos os objetos da cena.
Diga-me, você terá que estar apontando para o objeto que quer atacar para ele receber dano? por que se for assim, Raycast ou Linecast dão uma resolução bastante simples para tudo isso
você tem uma void publica
- Código:
public void ApplyDamage(int damage){
currentLife -= damage;
if(currentLife <= 0){
OnDestroyed();
}
}
e no script que acredito estar no seu Player você tem esse comando:
- Código:
if(Input.GetKeyDown(KeyCode.T)){
ApplyDamage(3);
}
Então se você chamar a função "ApplyDamage", todos os objetos que contem o script com esta função, irão sofrer o efeito.
Nestes casos eu costumo utilizar alguns parametros para detectar qual é o objeto que está proximo, por exemplo:
OnTriggerEnter(Collider other)
ou
Raycast - hit
ou
Linecast - hit
destas formas, você pode dizer que o hit.script.variavel vai ser reduzido, e não irá aplicar o dano a todos os objetos da cena.
Diga-me, você terá que estar apontando para o objeto que quer atacar para ele receber dano? por que se for assim, Raycast ou Linecast dão uma resolução bastante simples para tudo isso
Re: Alcance de Ataque
Sim isso mesmo
Renan Arruda- Membro
- PONTOS : 3342
REPUTAÇÃO : 3
Idade : 28
Respeito as regras :
Re: Alcance de Ataque
Tente algo assim:
Este script vai na camera do seu Player
e este script vai no seu inimigo:
Más lembre-se de colocar no inimigo a tag que você deve definir no script do Player.
Já deixei as variáveis para configurar
Este script vai na camera do seu Player
- Código:
using UnityEngine;
using System.Collections;
public class ObjectDestructive : MonoBehaviour {
public int danoPorHit = 30;
public int DistanciaMaxima = 5;
public string TagDosAlvos = "OBJETO";
void Update () {
RaycastHit PontoDeColisao;
Physics.Raycast (transform.position, transform.forward, out PontoDeColisao, 100);
if (Vector3.Distance (transform.position, PontoDeColisao.point) <= DistanciaMaxima && PontoDeColisao.transform.gameObject.tag == TagDosAlvos) {
if(Input.GetKeyDown(KeyCode.T)){
PontoDeColisao.transform.gameObject.GetComponent<Destructive>().currentLife -= danoPorHit;
}
}
}
}
e este script vai no seu inimigo:
- Código:
using UnityEngine;
using System.Collections;
public class Destructive : MonoBehaviour {
public float currentLife = 100;
void Update (){
if(currentLife <= 0){
Destroy (gameObject);
}
}
}
Más lembre-se de colocar no inimigo a tag que você deve definir no script do Player.
Já deixei as variáveis para configurar
Re: Alcance de Ataque
Valeu ta funcionando!
Renan Arruda- Membro
- PONTOS : 3342
REPUTAÇÃO : 3
Idade : 28
Respeito as regras :
Tópicos semelhantes
» Animação de Ataque
» Adicionar mais um ataque ao inimigo.
» Animações/Script de Ataque
» Animação e Ataque dmg sincronizado
» Ataque e Dano no Inimigo [HELP]
» Adicionar mais um ataque ao inimigo.
» Animações/Script de Ataque
» Animação e Ataque dmg sincronizado
» Ataque e Dano no Inimigo [HELP]
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos