Workshop › OutRun-style Racer › Step 23 of 44

Steering by touch

What we are doing

On a phone, a finger on the left third of the game steers left, on the right third steers right, and anywhere it also accelerates. We work out which third the finger is in from its position.

```js
// Touch: hold the left or right third to steer; the car accelerates on its own while you touch.
canvas.addEventListener('pointerdown', (event) => {
  const rect = canvas.getBoundingClientRect()
  const third = ((event.clientX - rect.left) / rect.width) * 3
  keys.ArrowUp = true
  if (third < 1) keys.ArrowLeft = true
  if (third >= 2) keys.ArrowRight = true
})
function stopTouch() {
  keys.ArrowUp = keys.ArrowLeft = keys.ArrowRight = false
}
```

What it means

Your turn

Replace the old touch code (from its comment to the end of stopTouch) with the new one. The two lines below it stay.

Skills: Keyboard and mouse input

All steps

  1. Sky and ground
  2. Draw again and again
  3. Perspective
  4. One piece of road
  5. A road made of segments
  6. Where we are on the track
  7. The road ahead
  8. Stripes
  9. Paint from far to near
  10. Kerbs and a center line
  11. Striped grass
  12. Moving is one number
  13. Which keys are down?
  14. The gas pedal
  15. Brake, coast and a top speed
  16. Your car
  17. Speedometer
  18. A pedal for phones
  19. Move the camera sideways
  20. Steering
  21. No turning on the spot
  22. The grass is slow
  23. Steering by touch
  24. A track with curves
  25. Bend the road
  26. No jumps in the curve
  27. Which segment am I on?
  28. Curves pull you outwards
  29. Other cars
  30. Distance on a loop
  31. Cars that shrink with distance
  32. Traffic moves
  33. Rear-end crash
  34. Counting laps
  35. Show the lap
  36. A lap timer
  37. Show the time
  38. Best lap
  39. Show the best lap
  40. Racing or finished
  41. The finish line
  42. Finished!
  43. Race again
  44. Build it yourself: beat the clock