How do I make a positioning system in a race game?

Just started using Construct 2? Post your questions here

Post » Sat Oct 25, 2014 11:20 am

I've attempting to create a race game using @SeriouslyCrunchy 's car AI tutorial.

But my game needs a position indicator which shows the current position of the player.

How do I implement the feature, do I have to use mathematical functions or using waypoints?

Also, is it possible to make a position indicator which is similar to Mario Kart?
Twitter | Facebook | Instagram

If you play Puyo Puyo games, you can meet me at the Puyo Puyo English Community Discord: https://discord.gg/0k41S8ARwvY2iTIQ
B
103
S
24
G
11
Posts: 696
Reputation: 12,896


Post » Sun Oct 26, 2014 3:15 am

@Lordshiva1948 - Thanks, I'll use that technique for indicating cars on the track.

But what I meant is a ranking system. Which if the player is in the 1st position or else.
Twitter | Facebook | Instagram

If you play Puyo Puyo games, you can meet me at the Puyo Puyo English Community Discord: https://discord.gg/0k41S8ARwvY2iTIQ
B
103
S
24
G
11
Posts: 696
Reputation: 12,896

Post » Mon Oct 27, 2014 12:27 am

Keeping track of what waypoint the car is on is a way to give a very rough estimate of the rank. You can get a finer rank by also considering the perpendicular distance to the next waypoint.

So the event needed would basically look like this:

For each car ordered by waypoint*1000-perpDistToWaypoint decending
--- loopindex+1 is the rank.

If the distance between checkpoints can be more than 1000 change it to some higher value.

Ex.
https://dl.dropboxusercontent.com/u/542 ... /laps.capx

The perpendicular distance is the dot product between the waypoint line and the vector from the waypoint to the player. It can actually give us negative distances so we'll put it in a abs() so it's always positive.

Player = {x, y}
waypoint_to_player = {x-way.x, y-way.y}
waypoint_line = {cos(waypoint.angle), sin(waypoint.angle)}
perp_dist =abs( waypoint_to_player dot waypoint_line )=abs( {x-way.x, y-way.y} dot {cos(waypoint.angle), sin(waypoint.angle)} )
= abs((x-way.x)*cos(waypoint.angle) + (y-way.y)*sin(waypoint.angle))
vector
B
92
S
32
G
106
Posts: 5,273
Reputation: 69,457


Return to Beginner's Questions

Who is online

Users browsing this forum: No registered users and 2 guests