Video yükleniyor...
Video Yüklenemedi
Another game dev pop quiz! I want to move a block forward until it hits the closest surface in front of it without clipping. Blockcasting can be used. But on Roblox, the result gives you a single point of contact (yellow dot). How do you solve for the green... show more
12,669 görüntüleme • 1 yıl önce •via X (Twitter)
11 Yorum

I would say something like: OriginCFrame * CFrame\.new(0, 0, -(ray.Distance - plane.Size.Z)); Through a Blockcast that replicates the size of the block itself!

Customise the colours yourself or simply connect the Joy-Cons ! Head to ➡️ for more details about #AAAClock ! #indiedev #indiegame #IndieGameDev #nintendo #OLED #switchOLED

finalposition = startpos + direction * result.Distance can't test this but this would work right?

The result is the yellow dot, so that would end up clipping the cube through the part ahead of it by a little bit

What's the green dot? If the block was at the yellow dot would it be the center of the face of the cube? In which case it should be: origin + ray.Unit * hitResults.Distance

Maybe better worded: Solve for the black plane so that it doesn't clip into the surface in front of it. The yellow dot is the result from the blockcast; green is the "solved" reprojection that the black plane is on

I'm surprised that the engine returns only the point of contact from the block cast and not also the length of the vector that causes contact. You're basically asking to map the yellow point to a point on the surface of the cube. Min cos distance a grid of cube's surface points?

Here's the fun part that @ColRealPro showed: The Distance property of RaycastResult will give you the proper distance to the green dot. But the Position property will give you the yellow dot. This is nice b/c you get both the contact point & the correct distance to project it.

Make the greendot’s CFrame the lookvector of the cube * the block cast distance?

Use the surface normal for orientation, for the distance use ray casting.

This is the kind of stuff i suck at, i am only good at the logic part of coding, not the math part
