oh yeah, that’s the royalty-free menu music I used. not sure why it’s getting copyright flagged since i got it cc0 off pixabay but whatever. thank you so much for playing and for the video, I definitely need to split out the tutorial stuff more but you kinda nailed the tutorial track in the second video you posted. the last two turns were absolutely made for drifting
sevencrane
Creator of
Recent community posts
I actually tried that originally, to do some camera movement stuff. It was kinda slow but the main problem was that if the car was going over bumps or had a couple wheels in the gutter it would go crazy.
I tried a bandaid where I would average it over the last couple frames but then I realized I could just use the car’s local up vector.
Oh yes, that’s definitely a big part of it. I didn’t touch on it here but the springs’ compression is affected by the normal force in an emergent way via Unity’s physics.
Remember my last post about collider hell? That was because the springs were too weak. When the car was climbing a hill and slamming into a curve (or taking a banked curve, or a loop, any concave surface at high speed) the normal force was compressing the springs past their limit and the car’s body was scraping the ground.
So yes, it’s in the equation, just implicitly and not in a way that I need to calculate explicitly at runtime. I can just look at the springs’ compression and get an idea of it.
i do too…Vapor Trails was straight up unrealistic to make given the fact that I’m one guy with a day job.
Neodrive was/is a WAY more manageable project. i could just release it as-is but I want to have some more tracks and assets. it’s basically done minus like a dozen campaign tracks. I only dropped it because this new project seems very cool and I wanted to be a part of it.
Here’s what it looked like -

I already removed it and don’t want to revert back to an old commit, but the collider arrangement on the car looked like this. In the front, there was the sideways high bumper to compensate for the failing suspension, then two tubes on either side, and then a shorter one in the middle for the roofline. It made the car very willing to jump the track walls and completely screw up a run.

My wheels send raycasts down, by the suspension travel distance, in the shape of the tires. Then the nearest hit, if there is one, is taken as the ground contact point. The advantage to this is that you can also get the ground normal if the car is on a slight slope.
Also yes, the default wheel colliders are so annoying. I guess that’s the case for a lot of built-in systems. They’re good for tech demos and prototyping but eventually you’re going to want to build your own. I don’t know how I would have done the hydroplane mechanics without making my own wheels.
I actually explored some other alternatives when I was developing a prototype for this game back in like 2022. They all sucked.
That's interesting. If your math for the springs is good, you might need to play with the damping settings instead, because at higher suspension values you get a narrower range of working damping values. I think my spring strength is internally set to 1500 and the damping value is 100. Any much more or less than 100 damping makes the suspension unable to sit still.
Also yes, I did the exact same thing - a sideways capsule under the front bumper with 0 bounce/friction, but it didn't solve my issues because the car was going fast enough that it'd clip into the track between timesteps and get spat out.
Hey sorry, the game isn't in development anymore. Andromeda is in the rebuild I made and then stopped working on, though: https://sevencrane.itch.io/vaportrails-physics
Ah I see, thanks for the pic. Those darker parts on the right are reserved for controller inputs, and the darker parts under Keyboard are axes.
You can rebind your inputs, but you should use the + fields. Instead of binding Gas, for instance, you want to bind Gas+. Same for Brake: bind Brake+ to the key you want to trigger it.Steer+ is steer right, Steer- is turn left.
I'm using a Unity input package that autogenerates these buttons, because I'm too lazy to make this UI rebinding system myself, so I don't have much control over it, sorry. Since gas/brake/steering are linear inputs instead of binary on/off, when you add a keyboard key, you need to define a key as "when this is pressed, treat this axis as full 100% input."
I'll respond to comments as they come up.
FOR REPORTING BUGS:
If you see an error in red text at the bottom of the screen, please click "open log file" and paste the stack trace into your post. It should look something like this:
NullReferenceException: Object reference not set to an instance of an object at Wheel.ApplyCustomWheel (CustomWheel w) [0x00000] in <a87c48f2e9f940bf9d02216127ad16d1>:0 at CarCustomization.ApplyWheel () [0x00029] in <a87c48f2e9f940bf9d02216127ad16d1>:0 at CarCustomization.SetWheel (CustomWheel newWheel) [0x00007] in <a87c48f2e9f940bf9d02216127ad16d1>:0 at CarCustomization.LoadFromProperties () [0x0001f] in <a87c48f2e9f940bf9d02216127ad16d1>:0 at SavedObject.StartUp () [0x0001c] in <a87c48f2e9f940bf9d02216127ad16d1>:0 at SaveManager.OnLevelLoad (UnityEngine.SceneManagement.Scene scene, UnityEngine.SceneManagement.LoadSceneMode mode) [0x00029] in <a87c48f2e9f940bf9d02216127ad16d1>:0 at (wrapper delegate-invoke) UnityEngine.Events.UnityAction`2[UnityEngine.SceneManagement.Scene,UnityEngine.SceneManagement.LoadSceneMode].invoke_void_T0_T1(UnityEngine.SceneManagement.Scene,UnityEngine.SceneManagement.LoadSceneMode) at UnityEngine.SceneManagement.SceneManager.Internal_SceneLoaded (UnityEngine.SceneManagement.Scene scene, UnityEngine.SceneManagement.LoadSceneMode mode) [0x0000e] in C:\build\output\unity\unity\Runtime\Export\SceneManager\SceneManager.cs:244
This is very useful because it shows me where in the code the error happened. Thank you for reporting.
Whoops, try now, I forgot to make the control rebindings persist. And you should be able to see the "start engine" controls when you spawn in the tutorial stage though. Or did you just mean you'd want to see it always?
Edit: i made it always visible in the tutorial level, along with the respawn and gearshift buttons. They don't adapt to control changes yet, but they will eventually.
I used a higher-res rig and then render everything to a low-res texture, then scale it up. The characters are high-res sorta-pixel art, and the backgrounds and almost everything else are hand-drawn. This post is sorta old and out of date, but it covers the basics:
https://sevencrane.itch.io/vapor-trails/devlog/214252/tutorial-basic-skeletal-an...
Those comments make sense. I'll address them by paragraph:
- do you mean the up-air kick? or the unaimed kick? either way, I'm planning on adding air combos in the future.
- I think dash should refresh on a divekick now, I agree that it should give you another dash if you bounce. And yes, I'm going to move everything to the new system.
- The forward jumps and dash are actually at the same speed in-game, I think the effects just make it feel different. The platform sliding thing was a bug that I fixed (you still have momentum but it won't carry you over ledges, you'll stop at the edge)
- Multiple keys is definitely possible. I added a "Tornado Kick" unlockable for a multi-hit aerial in the early game. You can find it in the Prismatic Graveyard.
Thanks for playing!







