Tracktrain help needed

So I’m making an elevator, it works fine, except that when it stops on a floor when it’s going down the floor of elevator isn’t level with the floor it’s stopping at. I’ve figured out that it’s because the elevator stops at the edges of the path_track’s bounding box rather than at the center (which is aligned to that the origin of the elevator and the origin of the path_track are in the same place).

What I want to know is, is there any way to get a tracktrain to stop at the center of a path track, rather than the edges of it?

Use a func_movelinear.

It’s a multistop elevator that goes to 10 floors, I can’t use a movelinear and I’d really rather not totally rescript the whole thing since it took me a long time to come up with what I have now.

I added a .10 second delay to stopping it that made the gap less noticeable but increasing it any further makes it worse.

Set the ‘height above track’ value to 0 and lower the speed of the train when it approaches the last stop.

On an elevator I built, I placed two path_track entities before the final one; the first one fires a command to set the train to its maximum speed and the second fires a command to set its speed to a crawl. This way the elevator gets a boost to its normal speed when moving up and applies the brakes when moving down to avoid an uneven stop.

I’ll try that and see if that works.

The command is fired OnPass, right? and how should it look in hammer?

Come to think of it, you can just use the ‘new train speed’ value on the path_track entities, eliminating the need for any inputs or outputs.

Here’s how it would look, assuming your train’s max speed is 100

[_] - Floor 1
[_] - "New Train Speed: 100"
[_] - "New Train Speed: 5"
[_] - Floor 0

Keep the space between the booster and brake very small.

My train’s speed is 75.

So would those two need to go in between every floor?

I’m not entirely sure I can use this method though, since theway I did my elevator relies on branch paths and adding path tracks in between them might fuck something up. I may have to live with a crooked elevator…

Are you using branches for the multiple stops? If so, there are easier ways to do this, such as logic_relays that stop the elevator when triggered but are only enabled when their corresponding button is pressed. logic_relays can be used to incorporate some fairly sophisticated binary logic.

For instance, ten relays are placed (one for each floor) and each contains the command to handle the floor arrival events for the elevator car (apply the brakes, stop the car, open the doors). The initial state of each logic relay is ‘disabled’ and they’re only enabled when their respective floor button is pressed. Each floor’s relay is triggered when the car approaches its floor and, if it’s enabled, its events are trigged and the car stops. If disabled, it continues on its way without braking or stopping.