- Home /
enemy shoot AI precision
OK, this time I am trying to do an ai precision for the enemy to shoot the player. This is kind of difficult to make maybe because in this would depend of how good is the enemy shooting (using a var to calculate it) then also checking the reaction of the enemy to shoot and for last have possibility of shoot you in different parts of the body(depending reaction) and the possibility of miss the shot(depending on how good enemy is shooting). Note: I am not asking for a code, I am asking for what kind of methods would be better to use for this things and some ideas to make it. Thanks.
Answer by aldonaletto · Oct 28, 2011 at 12:41 AM
If you want to add some uncertainty to the enemy shot, I think you could add a random offset to the player position when calculating the shot direction - something like this:
var errorMargin: float = 1.0; ... // when calculating the shot direction: var shotDir = player.position + Random.insideUnitsphere * errorMargin - spawnPoint.position;This would add a random offset proportional to errorMargin, so the shot could hit different parts or even no part at all.
the only problem with this is that you are considering this like a "circle" where the enemy randomly shoots, and this is more than just a circle because it depends more about the contour of the player, but thanks anyways, if you can give me an idea for this it would be wonderful, my possible idea is doing randomly shoot to a specific point of the mesh of the player and also deter$$anonymous$$e another random(like yours) to make the possibility to miss.
Well, you could put the 'circle' a set distance away from the enemy, and only use it for the direction. Then, the inaccuracy will be consistent over all distances.
then just deform the result of Random.insideUnitsphere to make it more oval
for ex multiplied it by (1,2,1)
You could define a few regions separated by height, like head, chest and legs, randomly select one of them and add the spherical error - or the oval one, like @oxium suggested. This would be closer to a real shot - the guy aim to some specific part and shot, but the actual point hit (if any) will depend on the shooter skill and some random factors.
var pos = target.position;
switch (Random.Range(1, 3){
case 1: pos.y += 0.6; break; // head
case 2: pos.y += 0.2; break; // chest
case 3: pos.y += -0.2; break; // legs
}
pos += Random.insideUnitSphere * error$$anonymous$$argin;
var shotDir = pos - spawnPoint.position;
Your answer
Follow this Question
Related Questions
Make enemy more intelligent 0 Answers
How to reach multiple GameObjects' value , enemy AI 1 Answer
how to make an enemy Ai blow up when you shoot it? 2 Answers
How to make this enemy script shoot upwards? 1 Answer
free roaming enemy ai 1 Answer