[RESOLVIDO] Script individual
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Script individual
Tenho X inimigos em cena, quando o jogador entra no campo de visão de 1 dos inimigos é dado um número aleatório referente a decisão que ele vai tomar, porém todos os outros inimigos recebem esse mesmo valor. Como poderia fazer esse valor ser dado apenas ao inimigo que viu o player e não a todos?
Última edição por dstaroski em Sáb Jul 07, 2018 10:02 pm, editado 1 vez(es) (Motivo da edição : Resolvido)
Priste_Hell- Avançado
- PONTOS : 2976
REPUTAÇÃO : 17
Idade : 23
Áreas de atuação : Programador e roteirista.
Respeito as regras :
Re: [RESOLVIDO] Script individual
Primeiramente, é necessário que a gente veja o seu script, para que assim, possamos ver como você pode fazer isto.
Mas de modo geral é pegar um script (Colocar em cada inimigo) e colocar uma public int x;
Mas de modo geral é pegar um script (Colocar em cada inimigo) e colocar uma public int x;
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [RESOLVIDO] Script individual
- Código:
if (decision) {
if (FieldOfView.follow)
talk = Random.Range(0, 2);
}
if (talk == 0) {
AI.talk = 1;
decision = false;
}
else if (talk == 1) {
if (target != null && ai != null)
ai.destination = target.position;
decision = false;
}
Priste_Hell- Avançado
- PONTOS : 2976
REPUTAÇÃO : 17
Idade : 23
Áreas de atuação : Programador e roteirista.
Respeito as regras :
Re: [RESOLVIDO] Script individual
Amigo, diga como você criou a variável e como você muda ela (Por OnTrigger por exemplo.)
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [RESOLVIDO] Script individual
Eu uso raycast.
Depois disso script do inimigo faço
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class FieldOfView : MonoBehaviour {
public float viewRadius;
[Range(0, 360)]
public float viewAngle;
public LayerMask targetMask;
public LayerMask obstacleMask;
public static bool follow;
[HideInInspector]
public List<Transform> visibleTargets = new List<Transform>();
void Start() {
StartCoroutine("FindTargetsWithDelay", .2f);
}
IEnumerator FindTargetsWithDelay(float delay) {
while (true) {
yield return new WaitForSeconds(delay);
FindVisibleTargets();
}
}
void FindVisibleTargets() {
visibleTargets.Clear();
Collider2D[] targetsInViewRadius = Physics2D.OverlapCircleAll(transform.position, viewRadius, targetMask);
for (int i = 0; i < targetsInViewRadius.Length; i++) {
Transform target = targetsInViewRadius[i].transform;
Vector3 dirToTarget = (target.position - transform.position).normalized;
if (Vector3.Angle(transform.up, dirToTarget) < viewAngle / 2) {
float dstToTarget = Vector2.Distance(transform.position, target.position);
//Aqui onde vê se o player entrou no campo de visão do inimigo
if (!Physics2D.Raycast(transform.position, dirToTarget, dstToTarget, obstacleMask)) {
visibleTargets.Add(target);
follow = true; // caso tenha entrado fica verdadeiro
}
else
follow = false; // se não fica falso
}
}
}
public Vector3 DirFromAngle(float angleInDegrees, bool angleIsGlobal) {
if (!angleIsGlobal)
angleInDegrees += transform.eulerAngles.z;
return new Vector3(Mathf.Sin(angleInDegrees * Mathf.Deg2Rad), Mathf.Cos(angleInDegrees * Mathf.Deg2Rad), 0);
}
}
Depois disso script do inimigo faço
- Código:
public bool decision;
public int talk;
public AIDestinationSetter AI;
public Transform target;
IAstarAI ai;
void Start(){
decision = true;
}
void Update(){
if (decision) {
if (FieldOfView.walkPlayer) // se o player entrou no campo de visão então ele gera 1 numero.
talk = Random.Range(0, 2);
}
if (talk == 0) {
AI.talk = 1;
decision = false;
}
else if (talk == 1) {
if (target != null && ai != null)
ai.destination = target.position;
decision = false;
}
}
Priste_Hell- Avançado
- PONTOS : 2976
REPUTAÇÃO : 17
Idade : 23
Áreas de atuação : Programador e roteirista.
Respeito as regras :
Re: [RESOLVIDO] Script individual
É porque você deixou ela como estática, você não deve fazer isto nesta ocasião. Aliás, por que você não faz um script só para o inimigo?
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [RESOLVIDO] Script individual
Não estou mais usando ela como estática, mas mesmo assim o valor é dado para todos os inimigos.
Não faço apenas um script por questão de organização e facilidade de acessar certas partes do script.
Não faço apenas um script por questão de organização e facilidade de acessar certas partes do script.
Priste_Hell- Avançado
- PONTOS : 2976
REPUTAÇÃO : 17
Idade : 23
Áreas de atuação : Programador e roteirista.
Respeito as regras :
Re: [RESOLVIDO] Script individual
Mas é este o problema amigo. Você deve colocar um script em todos os inimigos.
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [RESOLVIDO] Script individual
Salvo engano, nao pode ter um ou mais script igual na cena. Para resolver isso, possivelmente vc cria um vetor do script em um outro. Dessa forma, cada posição do vetor, vai acabar sendo como se fosse um outro script do mesmo modelo mas salvo em posição de memória diferente do seu PC. Mais ou menos isso. Parece-me q vc nao colocou todos os scripts p q pudesse analisar melhor. Então o q eu tenho de informação e do pouco conhecimento q tenho é o q falei p ti.
Tiago95- Avançado
- PONTOS : 2629
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Script individual
Acabei por resolver. Obrigado a todos pela ajuda.
Priste_Hell- Avançado
- PONTOS : 2976
REPUTAÇÃO : 17
Idade : 23
Áreas de atuação : Programador e roteirista.
Respeito as regras :
Re: [RESOLVIDO] Script individual
Então já nos ensine como resolveu ou o link de onde achou uma solução. Grato!
Tiago95- Avançado
- PONTOS : 2629
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Script individual
Fiz o valor aleatório ser gerado no script do campo de visão e o a decisão é tomada no script do inimigo.
Priste_Hell- Avançado
- PONTOS : 2976
REPUTAÇÃO : 17
Idade : 23
Áreas de atuação : Programador e roteirista.
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Erro SCRIPT C# com Objeto (Script need's to derive from MonoBehaviour)
» [RESOLVIDO] Script
» [RESOLVIDO] Script em C#
» [RESOLVIDO] Script de imã
» [Resolvido]Script PHP ?
» [RESOLVIDO] Script
» [RESOLVIDO] Script em C#
» [RESOLVIDO] Script de imã
» [Resolvido]Script PHP ?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos