0
\$\begingroup\$

I want to create a canoe game, and want the canoe behaviour to be realistic for each paddling. How can I get the paddling effect on the boat right? (I think there is a forward force, plus a sharp rotation force)

These two are examples of canoe games with good physics with each paddling on the canoe:

https://www.google.com/doodles/slalom-canoe-2012

https://apps.apple.com/de/app/canoe-race/id1555043035

  • Do I need to add separate Force and Torque, for each paddle?
  • Do I need to do it once only or like continuously for a duration of time?
  • Do I need to apply the forces with a constant value of force, or do I need to decrease it over time until it fades out?
  • Do I need to AddForceOnPosition or just normally apply the force on the default center of mass?
  • Do I need to apply force in the direction of the canoe (considering its rotation), or do I need to apply it in a direction regardless of its rotation?
  • Is there any other force that I'm missing, besides the forward force, and a sharp rotation force?
  • Do I need to adjust drags in any way to get it right?

I'm trying to get it right by trying different parameters, but if you know how the physics actually work, or have any hint about that, that'd help me a lot.

\$\endgroup\$
1
  • \$\begingroup\$ I didn't check the second link but slalom canoe wasn't anything special. Just a simple rotation and increase in speed. Can you provide a bit more info? Is your game 2d or 3d? It would be good if you add some pics too \$\endgroup\$
    – Arian_ki
    Feb 26, 2022 at 12:35

1 Answer 1

1
\$\begingroup\$

I can't say I've implemented canoe physics before, but you seem to have covered all the major points. In a top down (2D) canoe sim there are basically two forces the a person is in control of (that doesn't include waves or current).

the stroke

First there's the force that is added on the stroke -- when a paddle first penetrates and then displaces water in a desired direction. This isn't instantaneous, but perhaps could be abstracted as instant, especially in a more fast-paced arcadey game. Personally I would play around with using an AnimationCurve to test out different force multipliers over time. I imagine the force over time might look something like a standard sound envelope.

This force isn't centered in respect to the boats center of mass, and will therefore lead to torque about the paddle. I would try AddForceAtPosition(paddleForce, paddlePos). Hopefully Unity's sim will feel right, but if it doesn't, then I would play around with adding torque artificially.

the drag

Then there's the asymmetric drag when a paddle is kept in the water which results in torque and a deceleration. This has the effect of rotating the boat about the paddle. In Unity you could model this as a small force going against the direction of the boat at the point of paddle insertion (try AddForceAtPosition where the force is some percentage of the current velocity).

There's also always going to be a passive linear inertia on the boat itself, irrespective of whether a paddle is in the water or not, this won't lead to torque however.

closing remarks

Leverage Unity's generic physics sim to handle as much as you can, but don't worry about being physically accurate. If you can't get a physically based sim to do what you want, then don't be scared to start adding artificial forces, changing masses or manually setting positions to make system feel better, and work better for you design.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .