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.
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.
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;