Mord Posted July 31, 2015 Share Posted July 31, 2015 As I mentioned over in the homebrew forum, here's a demo/source/tutorial/etc showing a way to aim projectiles at a target. It's basically a way of setting the X and Y speeds of a projectile based on the coordinates of the firing enemy and the target. The source has some commented out code that can make the enemy a little less precise at aiming, which can be good for having it spread it's fire out. You can move the player with player 1 controls, or the enemy with player 2 controls. binaries, source, and a zip of both attached. aim.bas.a78 aim.bas.bin aim.zip aim.bas 9 Quote Link to comment Share on other sites More sharing options...
+Atarius Maximus Posted August 1, 2015 Share Posted August 1, 2015 Nicely done, Mord! I could definitely see this as very useful for a game. I took a quick video of what it looks like here: http://youtu.be/CN5PbCp5sig http://youtu.be/CN5PbCp5sig 3 Quote Link to comment Share on other sites More sharing options...
RevEng Posted August 1, 2015 Share Posted August 1, 2015 Very impressive demo! Quote Link to comment Share on other sites More sharing options...
Mord Posted August 2, 2015 Author Share Posted August 2, 2015 Thanks, hopefully someone finds it useful in their own games or at least gets them thinking. The demo has several places it can use improvement or be tinkered with, including making it a bit more generalized and turned into a standalone function, or adjusting the minimum speeds - or trying to cap a maximum speed. I'll be doing stuff like that in graze hopefully during this week along with a bunch of other things - weather pending. Heat makes me useless. 1 Quote Link to comment Share on other sites More sharing options...
Dalta Posted May 1, 2019 Share Posted May 1, 2019 Hey would someone mind explaining a part of this code further please? Particularly, these two lines: if HeroX <= BulletX[z] then BulletDirection[z] = BulletDirection[z] | %00000010 else BulletDirection[z] = BulletDirection[z] & %11111101 if HeroY <= BulletY[z] then BulletDirection[z] = BulletDirection[z] | %00000001 else BulletDirection[z] = BulletDirection[z] & %11111110 I understand what an 'and' and 'or' operation is, but I don't understand what's actually happening here. I copied these lines into my own code to see what happens. I had to flip the '<' signs and I also replaced 'BulletX' and Y with the 'enemyX' and Y variables. But after that my enemy sprites only fired imprecisely and only down and to the right. Does anyone know why I got that behaviour in my code as opposed to the precise shooting in this code? It's probably worth mentioning that I have two direction variables, one for up/down and one for left/right rather than just 'BulletDirection' which seems to be the case here. I think I just need to alter the part after the 'else' to get it to fire up and left too, but unfortunately I don't know what's actually happening in order to change it. Thanks for any help Quote Link to comment Share on other sites More sharing options...
Mord Posted May 5, 2019 Author Share Posted May 5, 2019 Those two lines are defining the direction for the bullet for vertical and horizontal directions via two bits in the "BulletDirection" variable. Based on what I'm seeing above it looks bit 1 specifies if the bullet is travelling left or right, and bit 0 specifies up or down. The bullet wants to go towards the player, so I guess if bit 1 is 1, it will travel left. if bit 1 is 0, it'll travell right. If bit 0 is 1, it'll travel up. otherwise, travel down. All it's doing to determine this is comparing the screen coordinates of the target (the player) with the source (the shooting mob). If you switched the < conditions, you might need to switch the then and else portions of the if statements as well. Quote Link to comment Share on other sites More sharing options...
SlidellMan Posted February 15, 2021 Share Posted February 15, 2021 I have to say that this demo is quite helpful. Might have to use it to replace the current enemy bullet code in my shooting demo. 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.