Esempio n. 1
0
    public virtual void handlePatrolStep(PatrolStep step, float dt)
    {
        float vx = step.velocityVector.x * dt;
        float vy = step.velocityVector.y * dt;

        if (step.startPos.x < step.endPos.x)
        {
            x = Mathf.Min(x + vx, step.endPos.x);
        }
        else
        {
            x = Mathf.Max(x + vx, step.endPos.x);
        }

        if (step.startPos.y < step.endPos.y)
        {
            y = Mathf.Min(y + vy, step.endPos.y);
        }
        else
        {
            y = Mathf.Max(y + vy, step.endPos.y);
        }


        if (Mathf.Abs(x - step.endPos.x) <= 1 && Mathf.Abs(y - step.endPos.y) <= 1)
        {
            nextStep();
        }
    }
Esempio n. 2
0
    public void nextStep()
    {
        if (steps == null)
        {
            return;
        }

        stepIndex = (stepIndex + 1) % steps.Count;

        Step step = steps[stepIndex];

        if (step is PatrolStep)
        {
            PatrolStep patrol = step as PatrolStep;
            x = patrol.startPos.x;
            y = patrol.startPos.y;

            if ((scaleX < 0 && patrol.facingDirection > 0) || (scaleX > 0 && patrol.facingDirection < 0))
            {
                scaleX = scaleX * -1;
            }
        }
    }