예제 #1
0
 private GameObject[] m_izimekko_l;    //普通の子タグからのデータを入れるゲームオブジェクト
 void Update()
 {
     //いじめ子のデータを取得
     m_izimekko = GameObject.FindGameObjectsWithTag("izimekko");
     //いじめられっ子のデータを取得
     m_izimerarekko = GameObject.FindGameObjectsWithTag("izimerarekko");
     //いじめ子リーダーのデータを取得
     m_izimekko_l = GameObject.FindGameObjectsWithTag("izimekko_L");
     //普通の子のデータを取得
     m_hutuunoko = GameObject.FindGameObjectsWithTag("hutuunoko");
     for (int i = 0; i < m_hutuunoko.Length; i++)
     {
         if (m_izimekko.Length <= 2)//いじめっ子が少なくなると普通の子がいじめっ子に変化する
         {
             hutuunoko test = m_hutuunoko[i].GetComponent <hutuunoko>();
             test.izimepower = 30;
             test.tag        = "izimekko";
             test.move_mode  = hutuunoko.move.izimekko;
             break;
         }
         if (m_izimerarekko.Length <= 2)//いじめられっ子が少なくなると普通の子がいじめっ子に変化する
         {
             hutuunoko test = m_hutuunoko[i].GetComponent <hutuunoko>();
             test.tag       = "izimerarekko";
             test.move_mode = hutuunoko.move.izimerarekko;
             break;
         }
     }
 }
예제 #2
0
 private static void Update()
 {
     GameObject[] m_izimekko;       //いじめっ子タグからのデータを入れるゲームオブジェクト
     GameObject[] m_izimerarekko;   //いじめられっ子タグからのデータを入れるゲームオブジェクト
     GameObject[] m_hutuunoko;      //いじめっ子リーダータグからのデータを入れるゲームオブジェクト
     GameObject[] m_izimekko_l;     //普通の子タグからのデータを入れるゲームオブジェクト
     //いじめ子のデータを取得
     m_izimekko = GameObject.FindGameObjectsWithTag("izimekko");
     //いじめられっ子のデータを取得
     m_izimerarekko = GameObject.FindGameObjectsWithTag("izimerarekko");
     //いじめ子リーダーのデータを取得
     m_izimekko_l = GameObject.FindGameObjectsWithTag("izimekko_L");
     //普通の子のデータを取得
     m_hutuunoko = GameObject.FindGameObjectsWithTag("hutuunoko");
     for (int i = 0; i < m_hutuunoko.Length; i++)
     {
         if (m_izimekko.Length <= 2)//いじめっ子が少なくなると普通の子がいじめっ子に変化する
         {
             hutuunoko hutuunoko = m_hutuunoko[i].GetComponent <hutuunoko>();
             hutuunoko.move_mode = hutuunoko.move.izimekko;
             break;
         }
         if (m_izimerarekko.Length <= 2)//いじめられっ子が少なくなると普通の子がいじめっ子に変化する
         {
             hutuunoko hutuunoko = m_hutuunoko[i].GetComponent <hutuunoko>();
             hutuunoko.move_mode = hutuunoko.move.izimerarekko;
             break;
         }
     }
     Debug.Log(m_hutuunoko.Length);
 }
예제 #3
0
    void Update()
    {
        this.transform.position = new Vector3(this.transform.position.x, 0.5f, this.transform.position.z);
        float      DistanceToTarget = 0.0f;                                           //目標点との距離
        Quaternion TargetRotation;                                                    //目標点への方向

        DistanceToTarget = Vector3.Distance(this.transform.position, TargetPosition); //いじめられっ子への距離を計算
        //いじめられっ子のデータを取得
        izimerarekko = GameObject.FindGameObjectsWithTag("izimerarekko");
        //いじめ子リーダーのデータを取得
        izimekko_l = GameObject.FindGameObjectWithTag("izimekko_L");
        //普通の子のデータを取得
        hutuunoko = GameObject.FindGameObjectsWithTag("hutuunoko");
        if (izimepower >= 30)
        {
            switch (move_mode)
            {
            case move.loitering:    //徘徊
                //いじめっ子と目標点との距離を求める
                DistanceToTarget = Vector3.SqrMagnitude(transform.position - TargetPosition);
                //目標点との距離が近ければ、その場でキョロキョロする動きをする
                if (DistanceToTarget < CangeTargetDistance)
                {
                    change_move_time = 0;
                    move_mode        = move.sarchi;
                    break;
                }
                //目標点の方を向く
                TargetRotation     = Quaternion.LookRotation(TargetPosition - transform.position);
                transform.rotation = Quaternion.Slerp(transform.rotation, TargetRotation, Time.deltaTime * 2);
                //前に進む
                object_move(this.transform.position, Speed);

                change_move_time--;
                //いじめられっ子が視界内にいるか
                if (srachizimerarekko() == true && change_move_time <= 0)
                {
                    change_move_time = 0;
                    move_mode        = move.izimerarekko;
                    break;
                }
                float izimekko_Ldis = 0.0f;    //いじめっ子リーダーとの距離
                izimekko_Ldis = Vector3.Distance(this.transform.position, izimekko_l.transform.position);
                if (izimekko_Ldis < 3.0f)
                {
                    //change_move_time = 0;
                    //move_mode = move.izimekko_L;
                    //break;
                }
                break;

            case move.sarchi:    //動かずにキョロキョロする
                overlooking_time++;
                if (overlooking_time >= 50)
                {
                    overlooking_time = 0;
                    srach_angle     *= -1.0f;
                }
                transform.Rotate(new Vector3(0.0f, srach_angle, 0.0f));
                change_move_time++;
                if (change_move_time >= 600)
                {    //10秒経過したら探索に遷移
                    TargetPosition = GetPosition();
                    move_mode      = move.loitering;
                    break;
                }
                //いじめられっ子が視界内にいるか
                if (srachizimerarekko() == true && change_move_time <= 0)
                {
                    change_move_time = 0;
                    move_mode        = move.izimerarekko;
                    break;
                }
                break;

            case move.izimerarekko:    //いじめられっ子へ向かう
                //目標点(いじめられっ子)の方を向く
                TargetRotation     = Quaternion.LookRotation(targetizimerarekko.transform.position - transform.position);
                transform.rotation = Quaternion.Slerp(transform.rotation, TargetRotation, Time.deltaTime * 10);

                //前に進む
                object_move(this.transform.position, Speed * 1.5f);
                //視界からいじめられっ子がいなくなると立ち止まる
                if (srachizimerarekko() == false)
                {
                    change_move_time = 0;
                    move_mode        = move.stop;
                    break;
                }
                //いじめられっ子に近づくとその場でいじめる
                if (Vector3.Distance(targetizimerarekko.transform.position, transform.position) <= 2.0f)
                {
                    switch (targetizimerarekko.gameObject.name)
                    {
                    case (string)"izimerarekko":        //ずっといじめられっ子の場合
                        izimerarekko m_izimerarekko1 = targetizimerarekko.GetComponent <izimerarekko>();
                        m_izimerarekko1.izimekko_count();
                        break;

                    case (string)"hutuunoko":        //元が普通の子のいじめられっ子場合
                        hutuunoko m_izimerarekko2 = targetizimerarekko.GetComponent <hutuunoko>();
                        m_izimerarekko2.izimekko_count();
                        break;
                    }
                    change_move_time = 0;
                    move_mode        = move.izime;
                }
                change_move_time++;
                if (change_move_time >= 300)
                {
                    change_move_time = 300;
                    TargetPosition   = GetPosition();
                    move_mode        = move.loitering;//徘徊
                    break;
                }
                break;

            case move.izimekko_L:    //いじめっ子リーダーに付きまとう
                //目標点(いじめっ子リーダー)の方を向く
                TargetRotation     = Quaternion.LookRotation(izimekko_l.transform.position - transform.position);
                transform.rotation = Quaternion.Slerp(transform.rotation, TargetRotation, Time.deltaTime * 2);
                //目標点(いじめっ子リーダー)に進む
                object_move(this.transform.position, Speed);
                change_move_time++;
                if (change_move_time >= 600)
                {
                    move_mode = move.loitering;
                    break;
                }
                break;

            case move.izime:
                change_move_time++;
                if (change_move_time >= 150)
                {
                    change_move_time = 0;
                    move_mode        = move.loitering;
                    break;
                }
                break;

            case move.stop:
                change_move_time++;
                if (change_move_time > 120)
                {
                    change_move_time = 0;
                    move_mode        = move.loitering;
                    break;
                }
                //いじめられっ子が視界内にいるか
                if (srachizimerarekko() == true)
                {
                    change_move_time = 0;
                    move_mode        = move.izimerarekko;
                    break;
                }
                break;

            default:
                break;
            }
        }
        else
        {
            Destroy(this);
        }
        Objectcollision();
    }