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