Posted March 31, 20214 yr I'm making an projectile item, that when thrown, should bounce around a bit before stopping on the ground. however I'm having a really hard time with the physics of it, I've tried a few things but none of them quite worked. I tried looking at the code for some other entities, such as the ArrowEntity, but it didn't help either. For making the item bounce, I'd probably need the normal at the hit point to be able to "reflect" it's velocity How could I make it so the entity would behave more like a physics object? here's the code for the entity: DSixEntity.java
April 1, 20214 yr For the simplest implementation, whenever the projectile interacts with the surface, you'll get the associated face that the surface interacted with. Then, invert the associated component and multiply it with some number between 0-1 to represent to loss of energy. For example, if the associated motion velocity is <3,-1,2> and the ball hits a face on the Y-axis (either UP or DOWN), it will invert the component to <3,1,2>. Let's say we want to have 80% of the energy conserved, then it would be <3,0.8,2>. Of course, you'll need probably a deadzone for the total motion to deal with ridiculously small numbers. If you want to introduce other factors, then I would suggest looking over some bouncing ball physics.
April 1, 20214 yr Author 1 hour ago, ChampionAsh5357 said: For the simplest implementation, whenever the projectile interacts with the surface, you'll get the associated face that the surface interacted with. how do I get the associated face? it doesn't seem that RayTraceResult can tell me that. note: I was/am about to implement the jBullet engine (I might as well since my projectiles have shapes more complex than a cube)
April 1, 20214 yr If RayTraceResult#getType returns BLOCK, then you know the ray trace is an instance of BlockRayTraceResult which has a method called #getDirection (or #getFace in MCP) exactly for that.
April 1, 20214 yr You can have a look at this: https://bitbucket.org/pelluciddice/ava/src/25660921a9340d7f3d99f2dc790d4852898c8156/src/main/java/pellucid/ava/entities/BouncingEntity.java#lines-40:65 where in this case a grenade.
April 1, 20214 yr Author 13 hours ago, poopoodice said: You can have a look at this: https://bitbucket.org/pelluciddice/ava/src/25660921a9340d7f3d99f2dc790d4852898c8156/src/main/java/pellucid/ava/entities/BouncingEntity.java#lines-40:65 where in this case a grenade. thanks for the example! but as I've said, since my entities use some more complicated shapes, I think I'm better off using a third-party physics library
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.