2020-08-05 10:50:54

First Person View Bobbing | Code Source Offert




Bonjour tout le monde, aujourd'hui je me suis casser la tête à faire en sorte de récupérer la distance entre la caméra et la tête du joueur.

j'ai bossé toute l'après-midi pour trouver une solution, feuilleter toutes les documentations de roblox, je suis même allez voir si une personne a posé cette question sur devforum roblox et sur scriptinghelpers.

Mais rien, aucune réponse, aucune question, donc je suis allé cherché comment utilisez-la caméra de base dans le workspace du jeu.

En premier lieu, j'avais fait un petit code qui permet de dire si telles choses doivent dire A ou B, mais comme toute mon attente, l'output du jeu allez me sortir

CameraOption is not a valid member of Model



Code en question :

local player = game.Players.LocalPlayerlocal
CameraOption = game.Players.LocalPlayer.Character.CameraOption
local distance = (player.Character.CameraOption.Position - player.Character.Head)



if distance < 0.5 then
print("b")
else
print("a")
end



Mais rien ne fonctionner, donc je suis partie me baser sur cette ligne de code que j'avais réfléchie au préalable.

while wait(1) do 
if workspace.CurrentCamera.CFrame.Position.X > 1 then
print("b")
else
print("a")
end

end



Mais comme toute attente, toujours rien, toujours la même erreur, quand je suis en

CameraMinZoomDistance



il devrais

print("A")



alors qu'il continue a

print("B")



Donc je me suis dit qu'il fallait peut-être utiliser les magnitudes du jeu, faire en sorte de sélectionner deux

gameobject



de sélectionner la

magnitude



et de faire une petite soustraction entre les deux.

Code Source du code en question :

local magnitude = (workspace.CurrentCamera.CFrame.Position - game.Players.LocalPlayer.Character.Head.Position).Magnitude
print(magnitude)



Et la comme par magie, ça a fonctionné, ça printer bien les coordonnées entre la tête du joueur et la camera.

87-52ea769379b11096a2c8441ea1cade5e.gif



PS : dans la vidéo j'ai remplacé les coordonnées par A ou B, B pour en dehors de la tête, A pour l'intérieur.

En quelques heures (4 h), j'ai réussi à vouloir ce que je voulais faire, faire en sorte que le jeu détecte une donnée de la distance demandée pour afficher un effect, bien sûr cette effect je vais vous le partager mais avant voici une petite vidéo, et n'oublions pas que je vais aussi vous partager le code sources du code actuel, comme je fais pour toujours.

88-e0bb180f2eeceb41d9b91805e7371416.gif



Code sources en partie :

while wait(1) do
local magnitude = (workspace.CurrentCamera.CFrame.Position - game.Players.LocalPlayer.Character.Head.Position).Magnitude
--print(magnitude)

if magnitude < 0.7 then

print("B")

else

print("A")

end
end



Code du View Bobbing (effet réaliste) :

while true dowait();
if game.Players.LocalPlayer.Character then
break;
end;
end;
camera = game.Workspace.CurrentCamera;
character = game.Players.LocalPlayer.Character;
Z = 0;
damping = character.Humanoid.WalkSpeed / 2;
PI = 3.1415926;
tick = PI / 2;
running = false;
strafing = false;
character.Humanoid.Strafing:connect(function(p1)
strafing = p1;
end);
character.Humanoid.Jumping:connect(function()
running = false;
end);
character.Humanoid.Swimming:connect(function()
running = false;
end);
character.Humanoid.Running:connect(function(p2)
if p2 > 0.1 then
running = true;
return;
end;
running = false;
end);
function mix(p3, p4, p5)
return p4 + (p3 - p4) * p5;
end;
while true do
game:GetService("RunService").RenderStepped:wait();
fps = (camera.CoordinateFrame.p - character.Head.Position).Magnitude;
if fps < 0.52 then
Z = 1;
else
Z = 0;
end;
if running == true and strafing == false then
tick = tick + character.Humanoid.WalkSpeed / 92;
else
if tick > 0 and tick < PI / 2 then
tick = mix(tick, PI / 2, 0.9);
end;
if PI / 2 < tick and tick < PI then
tick = mix(tick, PI / 2, 0.9);
end;
if PI < tick and tick < PI * 1.5 then
tick = mix(tick, PI * 1.5, 0.9);
end;
if PI * 1.5 < tick and tick < PI * 2 then
tick = mix(tick, PI * 1.5, 0.9);
end;
end;
if PI * 2 <= tick then
tick = 0;
end;
camera.CoordinateFrame = camera.CoordinateFrame * CFrame.new(math.cos(tick) / damping, math.sin(tick * 2) / (damping * 2), Z) * CFrame.Angles(0, 0, math.sin(tick - PI * 1.5) / (damping * 20));
end;


- Maxime664100 Like

Retour


Commentaires






Bootstrap