From f112c37e9e5755c7ab24058cb3d56780c09d7672 Mon Sep 17 00:00:00 2001 From: swim67667 <150874399+Swim67667@users.noreply.github.com> Date: Wed, 24 Jun 2026 22:40:27 -0400 Subject: [PATCH] adding top collision --- src/collision.c | 13 +++++++++++-- src/entity.h | 1 + src/main.c | 6 ++++-- src/world.c | 10 +++++++--- src/world.h | 4 +++- wrldboxMacOS | Bin 52336 -> 52336 bytes 6 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/collision.c b/src/collision.c index 94490cf..14135c9 100644 --- a/src/collision.c +++ b/src/collision.c @@ -20,8 +20,17 @@ void checkCollision(){ { float forcex=fabsf(((en1->mass+en2->mass)/2)*((((en1->velocity.x)+(scale))+((en2->velocity.x)+(scale)))/2))*(scale); - float forcey=fabsf(((en1->mass+en2->mass)/2)*((((en1->velocity.y)+(scale))+((en2->velocity.y)+(scale)))/2))*(scale); - if(en1->position.x < en2->position.x){ + float forcey=fabsf(((en1->mass+en2->mass)/2)*((((en1->velocity.y)+(scale))+((en2->velocity.y)+(scale)))/2))*(scale/4); + if(en1->position.y+en1->size*0.6f <= en2->position.y+en2->size*0.5f){ + ApplyForce( + en1, + (Vector2){0, -((en1->mass*g))} + ); + en1->velocity.y = en1->velocity.y * 0.1f; + en1->velocity.x = en1->velocity.x * en2->drag; + } + else if(en1->position.x < en2->position.x){ + ApplyForce( en1, (Vector2){-forcex, 0} diff --git a/src/entity.h b/src/entity.h index 442e8c4..775a895 100644 --- a/src/entity.h +++ b/src/entity.h @@ -20,6 +20,7 @@ typedef struct Entity Vector2 force; Color color; + float drag; } Entity; diff --git a/src/main.c b/src/main.c index dd8262f..22e3720 100644 --- a/src/main.c +++ b/src/main.c @@ -59,7 +59,8 @@ int main(void) GetRandomValue(50,255), GetRandomValue(50,255), 255 - }); + }, + GetRandomValue(0, 1) + 0.1f); } if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) @@ -72,7 +73,8 @@ int main(void) m.y, 25, 1.0f, - ORANGE); + ORANGE, + 0.1f); } if (isSimulating) diff --git a/src/world.c b/src/world.c index ffcdef1..a283714 100644 --- a/src/world.c +++ b/src/world.c @@ -52,7 +52,8 @@ Entity *SpawnEntity( float y, float size, float mass, - Color color) + Color color, + float drag) { for (int i = 0; i < MAX_ENTITIES; i++) { @@ -67,6 +68,7 @@ Entity *SpawnEntity( e->mass = mass; e->size = size; + e->drag = drag; e->position = (Vector2){x, y}; e->velocity = (Vector2){0, 0}; @@ -104,7 +106,8 @@ void InitWorld(void) 120, 40, 1.0f, - BLUE); + BLUE, + 0.1f); if (player) { @@ -118,7 +121,8 @@ void InitWorld(void) 50, 25, 1.0f, - RED); + RED, + 0.9f); } simTime = 0.0f; diff --git a/src/world.h b/src/world.h index 4cd9163..232a135 100644 --- a/src/world.h +++ b/src/world.h @@ -18,6 +18,7 @@ extern const float MAX_PLAYER_SPEED; extern const float PLAYER_SPEED_FACTOR; + void ApplyForce(Entity *e, Vector2 force); bool IsGrounded(Entity *e); @@ -26,7 +27,8 @@ Entity *SpawnEntity( float y, float size, float mass, - Color color); + Color color, + float drag); void ClearWorld(void); void InitWorld(void); diff --git a/wrldboxMacOS b/wrldboxMacOS index d36617dbb8024ea7180dce3e30d3ae6bbeeddfd9..aaee8234c98004e1aeb445a3d2c05068d8b207db 100755 GIT binary patch delta 2680 zcmZ`*4Nz3q6+ZX91$Oz{<#)k_x4ZlZ3c8|2ASyg+!cQko>T6Ok4GIyfR|D^~43 z0yEK+X?R|yVx}=@$p}W$ZFiioEpH+s4jGe-X~;~HnanK3WLD$UrF9alKlI%99wzBb z-^_jYobR0bo%7DU_w0rT`0xPV_X(F_S3avs+%EtS05G!`KKli_mXuQ)XO6z3BXHPB zUnJ!zdtJI`jsY{BqeW2;8YZrke#0soR;FuKzsPMPWT*dCULdv~Zh2<=J8u^qJN5VW zA6Hg=y_`;)N=evHBI-FhVNbI?h-&Y3z|)vZ^6=#AW5;M$R35oXN1`0=-DyjB)7Z#l z$DjSB?roUKrB$8t_^xrGp~ zhaY5XuY)JJ4s@OfQ8fcxGk-`FLPQmgx`ki~sKIq&tvXvGs(B{p*8-+v;FBk%qk*M> zZb8Qlq7;@G1};JpOjxs}fa<~e(2bTA-U3jyz*Z#p;3yE)S&yhjB7e{-s)M-p^kl>M zY&P2RaAc!BPgEcB(4UMPEb&3K2OS1a4Ei{6IMB~2s&~*Y81pTUTXYMvNocp@ND|f9 zS-Yryg-&e4=q*czuyJwGuJ2ycm^lIxh9{k4*@!(jR5h|VNtZ`^o)2$QAOia3C|Qce zxfOH8Gvk9b<%$*crNRL#+{G+bWCc&?1I?$eT!};<7J=aGDuxm!&mqSkFN{O9EZwFT zqCMLfA_J^v)*6)A>_Y43%rjEQ#YkBS?t{R@uVm>1!~wE|-~mu&PL?JTW$E1|>=1q} zk)_iSvUHhlig9>Vw9K}N0nF`OaGw|$p3E#A`(Ny%%u+vMgL9dsA*U=2|2wl3K$hG% zMiCDlz#1PC)qi+JmB+|S=fH#quO&Z67@lkx8|E{|2Kj~s-nLqJ!zeRy#7iTLfYU$Y z1f7bhi22TP%E!8iLUUsa$QHUaw!r!XdWW`)0SlhV6_p(QZEP(mrXR;{OukmGRN|M- z{sIEs_|rBz^M^4Ay@$%Q6oFd*~|L>S!Mx z8zsvuOV86CntC0SGq}qVeN9vIiINp3OOMl!ZL3p#u#+fftg^HoQz*qz_i)kfrs)aQ zk^+tA%UZ36YHaxfTxfOi4N*cs;c*y-JE{4u?@r#y$#^W z)o^xlLss!F;7w)cPM5Wo@Ms;oNvwtBet#`}C#fgHXRiE~{HoDoG;-X#reqhURmAzb zlXnu7u&v!rag%78keZeAh@MeDVNkP5v(Bbfcb3q))LQZ-J)J6i-@WGly5~}}-MJJh zlh)W>`j8ZHkPRFRJJC#S;Urxcm>Yb-q?oZPrw4RY3fBCB@)VmySP!wk3JPUU^Ys5_p*T0sbo2N==VTmDOO`yLb1& zs_J0wxWu$JbyEd#$2}E^W)}W2QSI(UvqFgntne$TEjuI0a15r;8%Jcj>lw zAj%gnTl!2xe9P_`?z!_EHhzqZ!)n6b=hFX##4;Vr^Yk)ZPc!Vjh8-u(-kG7>3k@BN zzdIWY-G>X225Om({5@Wm4m@i(%oqea41LT9*lsL1Z1^8B^rMFUilKKJ`ViAGQjSCC z|FfaHaLZT%6Nb(WrqY|28x!}tbUY1>EU`WpeRfJ9VR~@N$?bLdU!6*e@Y*ps?I8zn zQ(kE6+|s=Lsh>dWxpC#g{>J2$`z}nc{q?689#~G!g=gkRCx#Y^JK*O-mp{##S)700 z@maNK>Av&Qn%_qj|0!O2tA6wfy}$O$sezg+TYl#^|7`r5m)ysndhGs3-@NkX_{BFr zD5`($)F*#vZhv>wd;Tx=ZC7sii>{`TyppnA<$s<3>Ug-%bn`cz=_g;mSM}U+|Gm+N O1zU&b``cL|*z;fgg&}VM delta 2349 zcmZ`)eN0?c7C-mB8RiWz49o`u9p;0A1qy-{Qy5_25iAt9rgm1hR4GVH*EV8-*0xkI zJS@hIapSz4CTi6R)TUtEmF_fz$vSH(VsN{fWw$1^>27DNZbrAsvfa8Fsw{in%tN<- z>`U%_=lp)>oO|xMUyHBui?8zj%bX@tzS3xFbpS8`5R{I-RtMh8YE7Na1bi!jLZ=g- zW3|>6R|3vgVMXU~gU*hN%#A%vFi0vhu*w8PZUmfF zqTwdaYbseufN5K}!eeYik7azeeOg%7^>$g|;e`Iyv>u0a1?&V) z=#F?5@U<6)f`8sXbwqq95TkJyQGQL_{8 z5<@qMw@}I>e0yw!_^?@x!;_7TnwjiuVkoM_;eU*iE9N>QDa0G8rHCORViZHy$OtEs zbDU4Dtk`}igcdT!sW1-{w%osIV&xcqlU%mW?~(tmf#Z@+@_kGHR%)~alki86e4Au} zWTDrKbt#$o_f*OMBuEK(gZ}5sp+b>AC3%E*z7NTg?+PAGDchkSw2&JW)}wm3iJez0 zwFz8Il6>KV5S%$I`GSN4taXNuKuF>w-;7D}om<8FX<|(BjcO&|d&pAl)^TDY-C~eR z@lN=l7#yEmk~rj?|=R3%4v?ww=2sA+kbFPGN8;*mjXXw6wHbdISLcZ}NWLnZ%P7tCgW#3NjFPW}QYfXi z>pv?t8|qC>Opn`4Z5qF_RRShI38P+YGH)T_tQTJ~x9Ai>28L;7J7!oKTl~U|S7uBM zfjie}V2MLVyDg3b;ZdWw1Xc(sia$seaoBaxRWUVJi_Tmd!+v4>zzD`6W)CuRV8a?CbF7p@ zFkXgoF(@#hcfF99QM6nN>aoLaGwe-DoW%sP&14z0!P3_@ajB5DcOe6hBG+jX|3W=@ z!WC3u!az&Mt6G)y5K`>I4Iqbn*(bNwB5-d$Ujx0LtSpl!}1&*V4=Og#J{7W2gm-WC>O#oL-z`N;u4_JWt ztpMo&8h8k}Kt}Gj&VV~Nn+1}@uZBvZwZOxd_tHz$>}$W@SKkEso}R9wjok-!?}0QP zZYg|hBXv;^+AcU7&zF&WLqRW9P&Z#ruKV{ry}kQDS10T|*mR)#(EiRnov@3-Dpre1 z7goA+_fa>wR_Thd|H6)fn1WudWpS7Gqi~aHK%%RNhj%TMtv@bauEp;z{A2Kvb~sJa z`!#R#on0Stt;f0eQ>pYu4ZvRYX-!phDrjeR;;GG2`KMLht@3^L1Ye@+(VT={t?K7( z3B6g-DSp?W8sJgY;F20(kE+kB1NN#8ovQt_s@|jOFRS|Fs{Xd>f8UzKfM-?xo{WS( zqw3tG6~Fng&D5&;Wzi&+#QI$L=$w<4;L$l3*WwDCn9I^`&m