Fuze shoot wip
-
Bare bones while I work out some kinks
Mainly having trouble with missed shot
tracking.
My current work around is to send an off screen sprite down when you fire which will collide with another sprite to detect a missed shot. If target hit the off screen sprite won't move. Which works
But is there a better way ? -
I can't see the video (from my phone), but would tracking the shot sprite's xy-coordinates help in your case? If either x or y are beyond the screen boundaries, call it a miss?
-
This would be cool with motion controls. Even if they are a bit screwy.
-
@DaddyJDM nothing is going off screen as the reticle is where you fire, iv tried a manner of things but i guess this is the best route before getting further into the build.
hoping to have miss fires reduce round times. -
Aren’t you already doing a collision check for when they make a hit, and destroying the target sprite? If they press fire and the result isn’t destroying the sprite that’s a miss.
-
@Jongjungbu how would i track a non collision apart from the way im trying.
i tried true/false switch but maybe i laid out the code wrong im not over invested in which way i do it so what ever seems best -
So how are you tracking a hit? Do you check if the crosshair collides with the target sprite or are you actually "firing" a bullet sprite?
-
@Bl4ckM4ch1n3 the collision occurs when sprites detect each other and c.zr all in a "for loop"
then outside of that i just have the if c.zr statement setup for non collisions, no bullet sprite -
So you are using the detectSpriteCollision() function?
You could wait for c.zr and then check for a collision between the crosshair and the target. If the result is negative, thats a miss. -
@Bl4ckM4ch1n3 yeah im using the detectSpriteCollision() function, just not 100% sure how i can code that.
Currently iv bodged 2 offscreen sprites so when i press zr iv setspritespeed to then collide with the other which triggers the miss, if target hit iv done setspritelocation and speed 0 seems to work but bit to messy to track through out the build -
I think you need to change the order a bit. First check for c.zr. If that's pressed check for the spirit collision. If they collide you've got a hit if not you've got a miss. And you don't check for the collision at all if the player isn't firing.
-
@waldron then try the method I've provided in my last post:
@Bl4ckM4ch1n3 said in Fuze shoot wip:
You could wait for c.zr and then check for a collision between the crosshair and the target. If the result is negative, thats a miss.
It's basically the same method as the one that @Richard has mentioned.
The following is not 100% accurate, since I haven't used F4NS in a while. But it should work this way:
if c.zr then for i = 0 to len(targetArray) loop result = detectSpriteCollision(crosshair, targetX) if result == true then thats a hit! else thats a miss! repeat
-
@Bl4ckM4ch1n3 I re-read you post after I'd posted mine and thought I could have just said I agree with you.
-
@Bl4ckM4ch1n3 cheers il have to have another go at it later the button press and collision seem instantaneous il swap round some bits see if i can get a collision order sorted, as a fail safe i could just have a sprite over the screen with roundtime -= 5 and if target hit roundtime += 5 to cancel the miss fire.
seems like such a simple thing to do until you start trying to code it, for me anyway :) -
i could just do away with misfires altogether but would be nice to track players accuracy either way il get it sorted and thankyou for your time
-
@waldron look at my last post again, I've provided some example-code. You can track the accuracy that way too!
Just increase a counter for every shot fired and a second counter for every hit. Then you'll be able to calculate the shot/hit-ratio.
You could even calculate the distance between the center of the crosshair and the center of the target-sprite to give different points:
Like +5 if you hit the center of the target and +1 if you hit it near the border. -
@Bl4ckM4ch1n3 excellent thank you i'l try this,yeah plan on using counters also for score. i like the idea of the extra score on accuracy i could put in the detect code if crosshair.x <= 5 ....
il give it a blast later cheers -
Still not working unfortunately tried all sorts
-
Start with @Bl4ckM4ch1n3 's code, but define a variable before the loop, say countHits.
Then, inside your loop through the targets, add 1 to countHits if the shot hits the target.After the loop, check countHits - if it is zero, you know you have missed all targets.
Is that helpful to try?
-
@DaddyJDM solved now I shared the program and jongjungbu fixed it, just one of those days