# Crosshair aims in front of the enemy

This topic is 3260 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

How to make a crosshair similar to the one in descent freespace. For those who don't know about it it was a full 3d space sim in which you selected an enemy and it showed you a moving crosshair in front of the selected enemy so if you shot through the crosshair you hitted the enemy and the crosshair always moved to help you aim depending on the position and speed of the enemy. Any ideas how can I make such a smart crosshair to help players aim at moving targets?

##### Share on other sites
Suppose both the projectile you shoot and the target move in straight lines at constant speed. So between the time you shoot and the projectile arrives, the target hasn't changed direction or sped up or slowed down.

Then the position of the target at 't' seconds later is
T = T0 + VT*t

and the position of the projectile is
P = P0 + vp*D*t

where
T0 = where the target is right now (vector)
P0 = where the shooter is right now (vector)
VT = velocity of the target right now (vector)
vp = speed of the projectile (scalar)
D = direction the projectile is shot at (unit vector) (this is what we want to find)

If the projectile hits the target, then P = T. Set these equatios equal and solve for D, and (if I didnt make a mistake) you get:
D = (T0-P0)/(vp*t) + VT/(vp)

But we still dont know what t is, so we need to use another piece of information, and that is that D is a unit vector. Thus ('.' means dot product)

1 = ||D|| = ||D||^2 = D.D
= ((T0-P0)/(vp*t) + VT/(vp)).((T0-P0)/(vp*t) + VT/(vp))
= ||T0-P0||^2/(vp*t)^2 + ||VT||^2 + 2*(T0-P0).VT/(vp*t)

Multiply each side by t^2 and it is a quadratic equation for t, which you can solve, since you know everything else in there. Then plug t get back into the equation for D, to find the direction the shooter needs to aim. (:

1. 1
Rutin
24
2. 2
3. 3
4. 4
JoeJ
18
5. 5

• 14
• 19
• 11
• 11
• 9
• ### Forum Statistics

• Total Topics
631760
• Total Posts
3002176
×