Fuze shoot wip
-
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
-