Fat Ninja
Fat Ninja
Bu projem Unity ile geliştirdiğim ilk platform oyunumdur. Oyun içerisinde ki amacımız kilolu bir ninja ile bizden çok daha fit ve donanımlı kötü amaçlı ninjaları def ederek dünyayı kurtarmaktır.
Github Link : https://lnkd.in/dw2aGFyR
Proje Yapımı Hakkında
Projeyi Unity oyun motoru kullanarak geliştirilmiştir. Düşmanalar RaycastHitler kullanılarak yapay bir zeka kodlanmıştir.
Örnek Kod:
public void EnemyMove()
{
transform.Translate(Vector2.right * speed * Time.deltaTime);
RaycastHit2D ground = Physics2D.Raycast(groundControl.position,Vector2.down, distance);
if (ground.collider == false)
{
if (moveinRight == true)
{
StartCoroutine(Timer1());
}
else
{
StartCoroutine(Timer2());
}
}
}
3 farklı düşman tipi kodlanmıştır ve bu düşmanların özellikleri
Basic olarak oyuncuyu gördüklerinde ona doğru yönelip saldırıda bulunmaktadırlar.
Bomba atan düşman karakter belirli bir range girdikten sonra ona bir TNT atmaktadır ve bu TNT belirlenen saniyede patlamakta ve etrafındakı nesneleri oyuncu dahil fırlatmaktadır.
Oyuncuyu fark ettiğinde onun üzerine atlayan daha da şişko olan düşman ninja karakterimizin üstüne çullanır.
Örnek Kod:
private void EnemyTrigger()
{
RaycastHit2D trigger = Physics2D.Raycast(transform.position, transform.right,Distance);
if (trigger.collider != null)
{
Debug.DrawLine(transform.position,trigger.point,Color.red);
EnemyFallow();
JumpFatEnemy();
}
if (trigger.collider == null)
{
Debug.DrawLine(transform.position, trigger.point, Color.green);
enemyIA.EnemyMove();
Detected = false;
}
}
void EnemyFallow()
{
Vector3 targetPos = new Vector3(Target.position.x, gameObject.transform.position.y, Target.position.x);
transform.position = Vector2.MoveTowards(transform.position, targetPos, FallowSpeed * Time.deltaTime);
}
private void JumpFatEnemy()
{
Vector2 targetPos = Target.position;
direction = targetPos - (Vector2)transform.position;
RaycastHit2D jumpArea = Physics2D.Raycast(transform.position,direction,Radius);
if (jumpArea)
{
if (jumpArea.collider.gameObject.CompareTag("Player"))
{
if (Detected == false)
{
Detected = true;
Debug.Log("Ýçeride");
FallowSpeed = 0;
}
}
else
{
if (Detected == true)
{
Detected = false;
Debug.Log("Diþarýda");
JumpNum = 0;
}
}
}
if (Detected == true)
{
if (JumpNum == 0)
{
FallowSpeed = 1.5f;
enemyRB.AddForce(direction * Force);
JumpNum = 1;
}
}
}


Başarılar dilerim
YanıtlaSilTeşekkür Ederiz.
Sil