void MoveRightAndLeft() {
    if (Input.GetKey(KeyCode.D)) {
        transform.position += Vector3.right * rightSpeed * Time.deltaTime;
    }
    if (Input.GetKey(KeyCode.A)) {
        transform.position += Vector3.left * leftSpeed * Time.deltaTime;
    }
    float clampedX = Mathf.Clamp(transform.position.x, Xmin, Xmax);
    transform.position = new Vector3(clampedX, transform.position.y, transform.position.z);
}

或

void MoveRightAndLeft() {
    float moveX = 0;
    if (Input.GetKey(KeyCode.D)) {
        moveX += rightSpeed;
    }
    if (Input.GetKey(KeyCode.A)) {
        moveX -= leftSpeed;
    }
    float clampedX = Mathf.Clamp(transform.position.x + moveX * Time.deltaTime, Xmin, Xmax);
    transform.position = new Vector3(clampedX, transform.position.y, transform.position.z);
}

或

void MoveRightAndLeft() {
    float moveX = 0;
    if (Input.GetKey(KeyCode.D)) {
        moveX += rightSpeed;
    }
    if (Input.GetKey(KeyCode.A)) {
        moveX -= leftSpeed;
    }
    Vector3 targetPosition = transform.position + new Vector3(moveX * Time.deltaTime, 0, 0);
    transform.position = Vector3.MoveTowards(transform.position, targetPosition, Time.deltaTime * speed);
}