Hello! For my game at one point, I was thinking of having a layer of snow on the ground that would leave actual 3D footprints. I’m just wondering if this is possible or not, and if so, what would be the best means of doing it? If you need more info, just ask. Thanks!
Also, as an update, I would hope they would have the same orientation as the player’s foot.
I’m not certain about creating actual holes in the snow but you could try and create a depth illusion using a decal on a part that spawns when a player takes a step. A touch event could work but it probably wouldn’t be very precise, so you might have to try to match the rhythm of the players steps inside a loop. As for matching the orientation you can just make it the same as the player’s torso or legs.
Ok. Thanks for taking the time to get back so fast! I will try that.
Yea it is possibly to leave 3d footprints:
this video is a good example and there are a lot of other videos as well.
Thanks so much! I will look into both!
This realistic snow uses basically ,Mesh Deformation
Totally! It would be possible! But it would requires alot of extended knowlegde and neices regarding roblox studio. You can create a snow surface with enough triangles then mesh it with bones and caculate the detection of the players feet to the snow surfaces. If player feet hit the snow surface then move the bones down (mesh deformation). This way you can make rough snow footsteps effect. Depends on how accurate you want to footsteps to be to the player feet. It is doable with thought out and managed optimization. There are other ways you can do it aswell like decals or spawning a snow area on top of the snow surface. But depend on how optimize and realistic you want your snow to be.
Thanks! I’ll look into some of that!
i happened to have made a system for this in the past using skinned meshes to create imprints, if you would like to take a look id be happy to give the source code.
Wonderful! I’d appreciate that. Thanks alot!
Alright I’ll send it later today once I get home
This is a old version of my script which is also simpler but it should work when not used on a large scale, if you do plan to do that i would recommend implementing Lod which I’ve done on some newer versions. you will need a skinned mesh for this to work i recommend this one: https://create.roblox.com/store/asset/6580905134/FBXImportGeneric?viewFromStudio=true&keyword=&searchId=75962987-9139-419e-8e8c-c9ff1205c550
For the code you should use a local script for performance although it can be used on server with lag:
--Vars/Instances
local Player = game.Players.LocalPlayer :: Player
local Character = Player.Character :: Model
local Planes = {}
local MaxReduce = 1.5
--Script
task.wait(0.5)
for i,v in game.ReplicatedStorage.Planes:GetChildren() do
v.Parent = game.Workspace.Planes
end
for i,v in game.Workspace.Planes:GetChildren() do
table.insert(Planes, v)
end
repeat task.wait(0.014)
for i,Plane in Planes do
local CPivot = Character:GetPivot()
if (Plane.Position - (CPivot.Position * Vector3.new(1,0,1) + Vector3.yAxis * Plane.Position.Y)).Magnitude < (Plane.Size.Z + 4) then
for i,v:Bone in Plane:GetChildren() do
task.spawn(function()
if v:IsA("Bone") then
if v.Position.Y > -MaxReduce then
if (v.WorldPosition - (CPivot.Position - Vector3.yAxis * 2)).Magnitude < 2.5 then
v.Position = v.Position - Vector3.yAxis * 0.2
end
end
end
end)
end
end
end
until false
Its a very simple script but i hope it helps
Thanks alot! I think this is the perfect solution!
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.