Mam mianowicie mały problem . Moze go rozpisze bo sam tytuł nic nie mowi . Chodzi o to , że za moją postacia chodzi pomocnik . Utworzyłem sobie kolekcje w której znajdują sie moi wrogowie . Jak sprawdzic o której postaci z listy podszedł moj pomocnik wraz ze mna i go atakował . Jak pobrac index postaci z listy . Bo jak na razie zrobiłem cos takiego ze kiedy moja postac wraz z nim podejdzie do danego wroga to wtedy index wynosi zawsze zero ....
Ponizej wstawiam kod :
using Assets.Scripts.Poziom1;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WodzAI : MonoBehaviour {
public Transform barbarzynca;
public Transform naomi;
public List<Enemy> potwory;
idWroga idWroga;
public GameObject wrogowie;
public int index;
//public Transform head;
//string state = "patrol";
//public GameObject[] punkty;
//int index;
//float dokladnoscPunkt = 5.0f;
Animator anim;
public static bool czyZakonczonoRozmowe;
public static bool czyZaatakowacOrka;
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
idWroga = wrogowie.GetComponentInChildren<idWroga>();
}
// Update is called once per frame
void Update ()
{
//czyZaatakowacOrka = false;
// Debug.Log("Czy zaatakowano orka przez wodza " + " " + czyZaatakowacOrka.ToString());
// Debug.Log(Vector3.Distance(barbarzynca.transform.position, this.transform.position).ToString());
BiegnijPoTrasieDoCelu();
}
public void BiegnijPoTrasieDoCelu()
{
Vector3 kierunek = barbarzynca.position - this.transform.position;
kierunek.y = 0;
if (index == 8)
{
//czyZaatakowacOrka = true;
czyZaatakowacOrka = false;
Debug.Log("Index == 5");
}
if (czyZakonczonoRozmowe == true && czyZaatakowacOrka == false)
{
float dystans = Vector3.Distance(barbarzynca.position, this.transform.position);
// Debug.Log("Dystans postaci od goblina to = " + dystans);
anim.SetBool("postoj", false);
if (dystans < 10)
{
Vector3 zobaczPozycja = barbarzynca.transform.position - this.transform.position;
zobaczPozycja.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(zobaczPozycja), 1.0f);
anim.SetBool("atak1", false);
anim.SetBool("atak2", false);
if (zobaczPozycja.magnitude > 1.6f)
{
anim.SetBool("bieg", true);
anim.SetBool("atak1", false);
anim.SetBool("atak2", false);
this.transform.Translate(0, 0, 3.0f * Time.deltaTime);
// Debug.Log("Bieg powinien");
}
else
{
anim.SetBool("postoj", true);
anim.SetBool("bieg", false);
anim.SetBool("atak1", false);
anim.SetBool("atak2", false);
}
}
else
{
anim.SetBool("bieg", false);
anim.SetBool("atak1", false);
anim.SetBool("atak2", false);
anim.SetBool("postoj", true);
}
}
else if (czyZakonczonoRozmowe == true && czyZaatakowacOrka == true)
{
//idWroga.id_wroga = potwory[index].id;
for (index = 0; index < potwory.Count; index++)
{
index = idWroga.id_wroga;
if (idWroga.id_wroga == potwory[index].id)
{
Debug.Log("Postac ktora zaatakowano to: " + " " + potwory[index].id.ToString());
float dystans = Vector3.Distance(potwory[index].potwor.transform.position, this.transform.position);
//Debug.Log("ORK WALKA WODZ");
anim.SetBool("postoj", false);
//anim.SetBool("straszenieAtak",false);
if (dystans < 10)
{
Vector3 zobaczPozycja = potwory[index].potwor.transform.position - this.transform.position;
zobaczPozycja.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(zobaczPozycja), 1.0f);
anim.SetBool("atak1", false);
anim.SetBool("atak2", false);
// Debug.Log("Dystans mniejszy niz 5");
if (zobaczPozycja.magnitude > 1.5f)
{
anim.SetBool("bieg", true);
anim.SetBool("atak1", false);
anim.SetBool("atak2", false);
this.transform.Translate(0, 0, 0.1f);
///Debug.Log("Bieg powinien");
}
else
{
// Debug.Log("Powinien atakowac Wodz");
anim.SetBool("bieg", false);
anim.SetBool("atak1", true);
anim.SetBool("atak2", true);
// Debug.Log("powinien atakowac");
}
}
else
{
anim.SetBool("bieg", false);
anim.SetBool("atak1", false);
anim.SetBool("atak2", false);
anim.SetBool("postoj", true);
//Debug.Log("stoi");
}
}
}
}
else if (czyZakonczonoRozmowe == false)
{
this.transform.Translate(0, 0, 0);
anim.SetBool("postoj", true);
}
}
}