Unity 3D Düşman Seçme Scripti

Kaya4242

Yeni üye
26 May 2013
12
0
Arkadaşlar video'da PlayerAttack scripts çalışmadı fark ediyseniz sorunu buldum :)
Son olarak arkadaşlar
"First Person Controller" veya "3rd Person Controller" kullanacaksanız İsmini(Player girin ve Tag=bölümünü videodaki gibi Oyuncumuzu "Player" Seçin ve "Add Tag" diyerek yeni bir "Tag" oluşturun isminide "Enemy" girin bunuda düşman objyenin tagını yapın.son olarakta "xx.cs" uzantılı dosyanın ismini "Targetting.cs" girin.Arkadaşlar ben neden bunları yazdım kodu yazarken bu isimlere göre yaptımda ondan.(eğer isimleri değiştirmek isteyen olursa yorum atmaları yeterlidir.)
Bu arada videodaki Unity baya eski sürümden kalma :) fark ediyseniz ama iyi eski sürümde çalışan kod en yeni sürümde hayli hayli çalışır :D
Bide videoda pek bişi anlatmadım siz video izleyin takıldınız yerler olursa yorum atmanız yeterlidir.
Video İzlemek İçin Tıkla !!!
Arkadaşlar koda hata verirse şunları siliniz:
PlayerAttack pa = (PlayerAttack)GetComponent("PlayerAttack");
pa.target = selectedTarget.gameObject;
bu ikisini silerseniz sorun çözülür.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Targetting : MonoBehaviour {
public List<Transform> targets;
public Transform selectedTarget;

private Transform myTransform;

// Use this for initialization
**** Start () {
targets = new List<Transform>();
selectedTarget = null;
myTransform = transform;

AddAllEnemies();
}

public **** AddAllEnemies()
{
GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");

foreach(GameObject enemy in go)
AddTarget(enemy.transform);
}

public **** AddTarget(Transform enemy)
{
targets.Add(enemy);
}


private **** SortTargetsByDistance()
{
targets.Sort(delegate(Transform t1, Transform t2) {
return Vector3.Distance(t1.position, myTransform.position).CompareTo(Vector3.Distance(t2.position, myTransform.position));
});
}


private **** TargetEnemy()
{
if(selectedTarget == null)
{
SortTargetsByDistance();
selectedTarget = targets[0];
}
else
{
int index = targets.IndexOf(selectedTarget);

if(index < targets.Count - 1)
{
index++;
}
else
{
index = 0;
}
DeselectTarget();
selectedTarget = targets[index];
}
SelectTarget();

}

private **** SelectTarget()
{
selectedTarget.renderer.material.color = Color.red;

PlayerAttack pa = (PlayerAttack)GetComponent("PlayerAttack");

pa.target = selectedTarget.gameObject;
}

private **** DeselectTarget()
{
selectedTarget.renderer.material.color = Color.blue;
selectedTarget = null;

}

// Update is called once per frame
**** Update () {
if(Input.GetKeyDown(KeyCode.Tab))
{
TargetEnemy();
}
}
}

Arkadaşlar bu tür dersleri arada vericem Unity ile ilgili ders için yorum atmanız yeterlidir.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.