void CreateTarget( ) { switch (state) { case CenterState.RUNNING: return; case CenterState.LEFT: target.x = managerObj.right; target.z = Random.Range(managerObj.back, managerObj.front); target.y = transform.localPosition.y; state = CenterState.RUNNING; break; case CenterState.RIGHT: target.x = managerObj.left; target.z = Random.Range(managerObj.back, managerObj.front); target.y = transform.localPosition.y; state = CenterState.RUNNING; break; default: break; } }
// Update is called once per frame void Update() { switch (state) { case CenterState.RUNNING: if (transform.localPosition.x > managerObj.right) { // right state = CenterState.RIGHT; } if (transform.localPosition.x < managerObj.left) { // right state = CenterState.LEFT; } transform.position += speedVector; break; case CenterState.LEFT: if (curTime < maxTime) { curTime += Time.deltaTime; } else { curTime = 0; maxTime = Random.Range(limitTime.x, limitTime.y); CreateTarget(); state = CenterState.RUNNING; speedVector = (target - transform.localPosition).normalized * speedValue * Time.deltaTime * 50; } break; case CenterState.RIGHT: if (curTime < maxTime) { curTime += Time.deltaTime; } else { curTime = 0; maxTime = Random.Range(limitTime.x, limitTime.y); CreateTarget(); state = CenterState.RUNNING; speedVector = (target - transform.localPosition).normalized * speedValue * Time.deltaTime * 50; } break; default: break; } }