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;
            }
        }

    }




Yorumlar

Yorum Gönder

Bu blogdaki popüler yayınlar

KUDAKAF 2023 Başarı Ödülü

KUDAKAF 2023

Tidal Armada - Early Access