Beispiel #1
0
        IEnumerator DoUpdate()
        {
            Vector3[]    vs        = Vector2DUtils.GetEdgeColliderPoints(tongueGuid, transform.position.z);
            Vector3      p0        = vs [0];
            Vector3      p1        = vs [vs.Length - 1];
            LineRenderer line      = null;
            float        length    = Mathf.Abs(Vector2.Distance(p1, p0));
            Vector3      tongnePos = p0;
            bool         attacking = false;

            _timer.maxMoveLength  = length;
            _timer.moveSpeed      = attackSpeed;
            _timer.switchDuration = attackInterval;
            _timer.Start();
            animIdle.StartPlay();

            while (true)
            {
                if (!pausing)
                {
                    float mv = _timer.Update();

                    Vector3 eggPos = GameController.GetSingleton().levelsController.eggController.transform.position;

                    eggPos.z = p0.z;

                    float angle = Vector2DUtils.Angle3(p0, p1, eggPos);

                    Vector3 postarget = p0 + (eggPos - p0).normalized * length;

                    if (_timer.phase == SwitchTimer.Phase.MovingOut)
                    {
                    }
                    else if (_timer.phase == SwitchTimer.Phase.MoveBackPrepare)
                    {
                        postarget = p0;
                    }
                    else if (_timer.phase == SwitchTimer.Phase.MoveingBack)
                    {
                        postarget = p0;
                    }
                    else if (_timer.phase == SwitchTimer.Phase.MoveOutPrepare)
                    {
                        attacking = false;
                        animAttack.StopPlay();
                        animIdle.StartPlay();
                    }

                    Vector3 tmppos = Vector3.MoveTowards(tongnePos, postarget, mv);

                    if (attacking)
                    {
                        Vector3[] points = new Vector3[] { p0, tongnePos };
                        tongnePos = tmppos;
                        line.SetPositions(points);
                        UpdateLineCollider(points);
                    }
                    else if (angle <= angleScope)
                    {
                        Vector3[] points = new Vector3[] { p0, tongnePos };
                        UpdateLineCollider(points);
                        tongnePos = tmppos;
                        attacking = true;
                        animIdle.StopPlay();
                        animAttack.StartPlay();
                        if (null == line)
                        {
                            line = DrawExtraLine(p0, tongnePos);
                        }
                        else
                        {
                            line.SetPositions(points);
                        }
                        UpdateLineCollider(points);
                    }
                    else
                    {
//						Log.Debug ("3333----");
                    }
                }

                yield return(null);
            }
        }