Profile image

Powered Sailplane 1b

117 Sleet01  3.6 years ago
21 downloads
No Tags
Auto Credit Based on Sleet01's Powered Sailplane 1b

This was my first fully scratch-built attempt at beating Going the Distance. I spent a few hours figuring out how to make Rotator-powered props really user-friendly by experimenting on another plane, and then tweaking this one to match.

Features:

  • "Engines" turn on and off with Activate1 ('1' key)
  • "Engines" have low-RPM idle when activated.
  • "Engines" are throttle-able.
  • Max IAS is about 520 kph.
  • Infinite fuel! (Pretend it's solar powered or something).
  • A mysterious port roll tendency that I'm still trying to debug!

Take-off:

  1. Turn on engines by pressing '1'.
  2. Max flaps (Trim slider to bottom.)
  3. ~60% positive prop pitch (VTOL slider to just above the middle of the top half)
  4. ~20-30% throttle until speed stops increasing, then smoothing increase throttle (if not careful, immense thrust will drive plane ass over teakettle).
  5. Increase prop pitch to 100% (VTOL slider full up) and return flaps to 0 degrees (Trim slider to middle).
  6. Trim nose pitch by adding a few degrees of flaps or dropping a few degrees of prop pitch.

Technical notes:
- I used the following formula for the RotatorJoint props with idle and throttle capability:

InputController:
"min" = "-1E+10"
"min" = "1E+10"
"input" = "sum( Activate1 ? ( clamp( Throttle, 0.03, 1 ) / ( 1.5 * 360 * 1000000 ) ) : 0 )"
JointRotator:
"range" = "180"
"speed" = "3.5"

This took a while to figure out, but here's the breakdown:
- sum(: rotators don't work by rotating a certain number of degrees, they work by trying to rotate to a set degree as fast as they can, based on their "min", "max", and "speed" values. If you just say "input": "Throttle", it tries to rotate to the "max" value * the Throttle value as fast as possible, limited by the Speed, and whatever Unity's internal maximum w value is. So to make a rotator throttle-able, you need to add a small, but variable, amount to its input value every tick to give the rotator a new value to shoot for - think a greyhound chasing a mechanical rabbit. The sum does that.
- Activate1 ? ... : ...: tell sum() to accumulate one value if Activate1 is on, and another if it's off. Without this, even if you deactivate the rotator, its target value keeps increasing every tick - meaning if you turn the engine off, then on again, it'll then be stuck at max throttle forever.
- clamp( Throttle, 0.03, 1 ): I wanted a minimum idle rate when the engines are turned on, for looks. This says "even if the user reduces the Throttle control to 0, never let it drop below 3%, and never let it exceed 100%".
- / ( 1.5 * 360 * 1000000 )) Experimentally I found that, because the rotator speed is 3.5 and the max value is 1E+10, and presumably because of some max value in Unity, I needed to divide the Throttle input by this large number to prevent 100% Throttle input from causing the accumulated target rotation from exceeding the maximum possible rotation speed of the RotatorJoint, thus causing the engines to be stuck at 100% for an unpredictable amount of time.
- : 0 ): when the engine is deactivated, stop accumulating degrees - ignore the throttle input completely until reactivated. This avoids another issue I've seen with using Throttle as a rotator's input: 0% Throttle sets the target rotation to 0 degrees, and the rotator starts running at full speed in reverse!

Spotlights

General Characteristics

  • Predecessor Powered Sailplane 1b
  • Created On Android
  • Wingspan 72.1ft (22.0m)
  • Length 33.9ft (10.3m)
  • Height 15.5ft (4.7m)
  • Empty Weight 2,293lbs (1,040kg)
  • Loaded Weight 2,293lbs (1,040kg)

Performance

  • Wing Loading 5.8lbs/ft2 (28.2kg/m2)
  • Wing Area 396.6ft2 (36.8m2)
  • Drag Points 1906

Parts

  • Number of Parts 42
  • Control Surfaces 7
  • Performance Cost 369