コード例 #1
0
ファイル: ShopperBehavior.cs プロジェクト: s1lin/CS521_A4
    void Update()
    {
        Debug.DrawLine(transform.position, target, Color.green);
        if (isFlyered && flyerTime < 2.0f)
        {
            velocity = Vector3.zero;
            transform.GetComponent <Renderer>().material = flyered;
            if (flyer != null)
            {
                velocity = Vector3.zero;
                flyers.Remove(flyer);
                Destroy(flyer);
            }
            //Flyered, Wait 2s;
            if (flyerTime < 2.0f)
            {
                flyerTime += Time.deltaTime;
            }
        }
        else if (flyerTime >= 2.0f)
        {
            flyerTime = 0;
            isFlyered = false;
            transform.GetComponent <Renderer>().material = notFlyered;
        }
        else
        {
            if (!isFlyered)
            {
                isFlyered = CollisionWithFlyer();
            }

            if (traversing)
            {
                Seek();
                if (chair != null)
                {
                    chair.transform.GetComponent <CapsuleCollider>().enabled = true;
                    CollisionAvoidance(chair.parent, -1);
                }
                else
                {
                    CollisionAvoidance(-1, -1);
                }
                Move();
            }

            if (shopping)
            {
                if (Vector3.Distance(target, transform.position) > obstacleDistance && chair == null)
                {
                    Seek();
                    CollisionAvoidance(-1, shopVisited);
                    Move();
                }
                else
                {
                    if (chair == null)
                    {
                        chair    = objectController.GetEmptyChair();
                        target   = chair.transform.position;
                        velocity = Vector3.zero;
                        forces.Clear();
                    }
                    //Inside Shop, Wait 1s;
                    if (shopTime <= 1.0f)
                    {
                        shopTime += Time.deltaTime;
                    }
                    else
                    {
                        if (Vector3.Distance(target, transform.position) > 4f)
                        {
                            Seek();
                            CollisionAvoidance(chair.parent, shopVisited);
                            Move();
                        }
                        else
                        {
                            transform.position = target;
                            chair.transform.GetComponent <CapsuleCollider>().enabled = false;
                            velocity = Vector3.zero;
                            forces.Clear();
                            if (sitTime < 3.0f)
                            {
                                sitTime += Time.deltaTime;
                            }
                            else
                            {
                                target     = new Vector3(99f, 0, Random.Range(-15f, 15f));
                                traversing = true;
                                shopping   = false;
                                Seek();
                                CollisionAvoidance(chair.parent, -1);
                                Move();
                                objectController.ChairReset(chair);
                            }
                        }
                    }
                }
            }
        }
    }