Çözüldü Roblox Studio place gizleme

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

ORBİTRON

Decapat
Katılım
23 Ocak 2023
Mesajlar
930
Çözümler
18
Daha fazla  
Cinsiyet
Erkek
Merhaba! Roblox'ta "Hoop Wars" adında bir oyunum var ve bu oyuna GUI eklemek istiyorum. GUI'yi ekledim ancak kamera sisteminden kaynaklanan sorunlar yaşıyorum. Bu yüzden oyunu farklı bir yer olan "Hoop Wars" adlı başka bir yere taşımayı düşünüyorum. Sadece menü GUI'sinin bulunacağı bu yerde, oyuncular "Oyna" butonuna bastıklarında harita olan diğer yere ışınlanacaklar. Bu işlemi zaten gerçekleştirdim, ancak profilimde iki "Hoop Wars" görünüyor. Harita olan yerin profilimde görünmesini istemiyorum, çünkü menü GUI'sinin olduğu yerde oyuncular harita olan yere ışınlanamıyor. Mesela, RVVZ nin "Criminality" oyununu bilenler bilir, orada sunucu listesi olan bir yer ve harita olan bir yer vardır. Ancak RVVZ'nin profilinde sadece tek bir "Criminality" görünür. Bu şekilde yapmak istiyorum. Bu konuda yardımcı olabilecek birisi var mı? @darkinbox
 
Çözüm
Ne tür bir sıkıntı?

Hocam anlatmak biraz zor olacak ama şöyle söyleyeyim şimdi benim yaptığım oyun biraz 2D biraz da kuş bakış tarzı bir şey menu GUI ise resimde attığım gibi 3D şimdi menu GUI'ye aynı sunucuya atınca bu camera fov ayarı falan karışıyor yani ekranın menu GUI sürekli bir yakınlaşıp bir uzaklaşıyor yani yani resimdeki menünün bir uzaklaşıp bir yakınlaştığını düşününün.
Kuş bakış ve 2D dedğim kod işe şu:

Less:
local RunService = game:GetService("RunService")
-- Oyun döngüsünü yönetmek için kullanılır (örneğin, her karede bir fonksiyon çalıştırmak için).

local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Tüm oyuncular arasında paylaşılan verilere erişmek için kullanılır.

local UserInputService = game:GetService("UserInputService")
-- Kullanıcı girişlerini (klavye, fare, dokunmatik) işlemek için kullanılır.

local CollectionService = game:GetService("CollectionService")
-- Nesneleri etiketleyip gruplandırmak için kullanılır.

local SoundService = game:GetService("SoundService")
-- Oyundaki sesleri yönetmek için kullanılır.

local Players = game:GetService("Players")
-- Oyuncu verilerine erişmek için kullanılır.

local modules = ReplicatedStorage:WaitForChild("Modules")
-- ReplicatedStorage içindeki "Modules" klasörüne erişim sağlar.

local Config = require(modules:WaitForChild("Config"))
-- Config modülünü yükler, bu modül kamera ayarlarını içerir.

local Utility = require(modules:WaitForChild("Utility"))
-- Utility modülünü yükler, bu modül yardımcı işlevleri içerir.

local localPlayer = Players.LocalPlayer
-- Yerel oyuncuya (kullanıcı) referans alır.

local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
-- Yerel oyuncunun karakterine referans alır, karakter yüklenmemişse bekler.

local hrp = character:WaitForChild("HumanoidRootPart")
-- Karakterin merkezindeki HumanoidRootPart nesnesine referans alır.

SoundService:SetListener(Enum.ListenerType.ObjectCFrame, hrp)
-- Ses dinleyicisini HumanoidRootPart'a ayarlar, sesleri karakterin konumuna göre duymayı sağlar.

local mode = Config.Camera.Modes[Config.Camera.Mode]
-- Geçerli kamera modunu alır.

local courtFloor.
-- Mahkeme zeminine referans için değişken oluşturur.

local camera = workspace.CurrentCamera
-- Oyundaki ana kameraya referans alır.

camera.CameraType = Enum.CameraType.Scriptable
-- Kamerayı script tarafından kontrol edilebilir moda ayarlar.

local zoom = Config.Camera.Modes.Isometric.Zoom
-- İlk zoom seviyesini ayarlar.

RunService:BindToRenderStep("CameraCFrameUpdate", Enum.RenderPriority.Camera.Value + 1, function(dt: number)
 -- Her karede çalışacak bir fonksiyon tanımlar.
 local rootPart = character and character.PrimaryPart
 -- Karakterin ana parçasına referans alır.
 if not rootPart then return end.
 -- Ana parça yoksa fonksiyonu durdurur.

 if not courtFloor then.
 -- Mahkeme zemini tanımlanmamışsa.
 courtFloor = CollectionService:GetTagged("CourtFloor")[1]
 -- "CourtFloor" etiketiyle işaretlenmiş nesneyi alır.
 if not courtFloor then.
 -- Eğer mahkeme zemini bulunamazsa uyarı verir.
 warn("Court Floor doesn't exist! Please add one with tag 'CourtFloor', it is required for the camera to work properly!")
 return.
 end.
 end.

 local courtCF = courtFloor.CFrame
 -- Mahkeme zemininin koordinat çerçevesini alır.
 local start = courtCF + courtCF.LookVector * courtFloor.Size.Z/2
 -- Mahkeme zemininin ön tarafını hesaplar.
 local meta = courtCF - courtCF.LookVector * courtFloor.Size.Z/2
 -- Mahkeme zemininin arka tarafını hesaplar.

 local rootCF = rootPart.CFrame
 -- Karakterin ana parçasının koordinat çerçevesini alır.

 local zAngle = Utility.Map(rootCF.Position.Z, meta.Position.Z, start.Position.Z, -1, 1)
 -- Karakterin Z pozisyonunu -1 ile 1 arasında haritalar.

 if shared.cameraTarget then.
 -- Eğer ortak kamera hedefi tanımlanmışsa.
 camera.CFrame = camera.CFrame:Lerp(shared.cameraTarget[1].CFrame, Config.Camera.Responsiveness * dt)
 -- Kameranın konumunu hedefe doğru yumuşakça hareket ettirir.
 camera.FieldOfView = Utility.Lerp(camera.FieldOfView, shared.cameraTarget[2], mode.FieldOfViewResponsiveness * dt)
 -- Kameranın görüş alanını hedefe doğru yumuşakça değiştirir.
 return.
 end.
 camera.FieldOfView = Utility.Lerp(camera.FieldOfView, mode.FieldOfView, mode.FieldOfViewResponsiveness * dt)
 -- Kameranın görüş alanını yapılandırma ayarlarına göre değiştirir.

 if Config.Camera.Mode == "Isometric" then.
 -- Eğer kamera modu "Isometric" ise.
 camera.CFrame = camera.CFrame:Lerp(CFrame.new(Vector3.new(rootCF.Position.X - zoom, rootCF.Position.Y + zoom, rootCF.Position.Z + zoom * zAngle), rootCF.Position), Config.Camera.Responsiveness * dt)
 -- Kameranın konumunu izometrik açıya göre ayarlar.
 else.
 -- Diğer kamera modları için.
 camera.CFrame = camera.CFrame:Lerp(CFrame.new(rootCF.Position + Vector3.new(-zoom, zoom, zoom * zAngle), rootCF.Position), Config.Camera.Responsiveness * dt)
 -- Kameranın konumunu farklı bir açıya göre ayarlar.
 end.
end)

UserInputService.InputChanged:Connect(function(inputObject: InputObject)
 -- Kullanıcı girişindeki değişiklikleri dinler.
 if inputObject.UserInputType == Enum.UserInputType.MouseWheel then.
 -- Eğer giriş tipi fare tekerleği ise.
 zoom = math.clamp(zoom - mode.ZoomIncrement * inputObject.Position.Z, mode.ZoomRange.Min, mode.ZoomRange.Max)
 -- Zoom seviyesini fare tekerleği hareketine göre ayarlar.
 end.
end)

local lastTouchScale = nil.
-- Son dokunma ölçeğini saklamak için değişken.

UserInputService.TouchPinch:Connect(function(touchPositions, scale, velocity, state, gameProcessedEvent)
 -- Dokunmatik sıkıştırma hareketlerini dinler.
 if state == Enum.UserInputState.Change or state == Enum.UserInputState.End then.
 -- Eğer sıkıştırma değişir veya sona ererse.
 local difference = scale - lastTouchScale.
 -- Ölçek farkını hesaplar.

 zoom = math.clamp(zoom * (1 + difference), mode.ZoomRange.Min, mode.ZoomRange.Max)
 -- Zoom seviyesini sıkıştırma ölçeğine göre ayarlar.
 print(zoom)
 end.

 lastTouchScale = scale.
 -- Son dokunma ölçeğini günceller.
end)

Sorunu çözdüm hocam, yardımlarınız için teşekkür ederim. Nasıl çözdüğümü anlatayım. Benim istediğim profilimde bu place gözükmemesiydi bunu nasıl yaptım diye soracak olursanız attığım resimdeki gibi porfile giriyoruz. Orada yaratımlar bölümünde sizin oluşturduğunuz ve public olarak ayarladığınız placeler yer almakta yanındaki üç noktaya tıklayıp profilden kaldır demeniz gerekiyormuş. Bu kadar kolay olduğunu düşünmemiştim.
Ne tür bir sıkıntı?

Hocam anlatmak biraz zor olacak ama şöyle söyleyeyim şimdi benim yaptığım oyun biraz 2D biraz da kuş bakış tarzı bir şey menu GUI ise resimde attığım gibi 3D şimdi menu GUI'ye aynı sunucuya atınca bu camera fov ayarı falan karışıyor yani ekranın menu GUI sürekli bir yakınlaşıp bir uzaklaşıyor yani yani resimdeki menünün bir uzaklaşıp bir yakınlaştığını düşününün.
Kuş bakış ve 2D dedğim kod işe şu:

Less:
local RunService = game:GetService("RunService")
-- Oyun döngüsünü yönetmek için kullanılır (örneğin, her karede bir fonksiyon çalıştırmak için).

local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Tüm oyuncular arasında paylaşılan verilere erişmek için kullanılır.

local UserInputService = game:GetService("UserInputService")
-- Kullanıcı girişlerini (klavye, fare, dokunmatik) işlemek için kullanılır.

local CollectionService = game:GetService("CollectionService")
-- Nesneleri etiketleyip gruplandırmak için kullanılır.

local SoundService = game:GetService("SoundService")
-- Oyundaki sesleri yönetmek için kullanılır.

local Players = game:GetService("Players")
-- Oyuncu verilerine erişmek için kullanılır.

local modules = ReplicatedStorage:WaitForChild("Modules")
-- ReplicatedStorage içindeki "Modules" klasörüne erişim sağlar.

local Config = require(modules:WaitForChild("Config"))
-- Config modülünü yükler, bu modül kamera ayarlarını içerir.

local Utility = require(modules:WaitForChild("Utility"))
-- Utility modülünü yükler, bu modül yardımcı işlevleri içerir.

local localPlayer = Players.LocalPlayer
-- Yerel oyuncuya (kullanıcı) referans alır.

local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
-- Yerel oyuncunun karakterine referans alır, karakter yüklenmemişse bekler.

local hrp = character:WaitForChild("HumanoidRootPart")
-- Karakterin merkezindeki HumanoidRootPart nesnesine referans alır.

SoundService:SetListener(Enum.ListenerType.ObjectCFrame, hrp)
-- Ses dinleyicisini HumanoidRootPart'a ayarlar, sesleri karakterin konumuna göre duymayı sağlar.

local mode = Config.Camera.Modes[Config.Camera.Mode]
-- Geçerli kamera modunu alır.

local courtFloor.
-- Mahkeme zeminine referans için değişken oluşturur.

local camera = workspace.CurrentCamera
-- Oyundaki ana kameraya referans alır.

camera.CameraType = Enum.CameraType.Scriptable
-- Kamerayı script tarafından kontrol edilebilir moda ayarlar.

local zoom = Config.Camera.Modes.Isometric.Zoom
-- İlk zoom seviyesini ayarlar.

RunService:BindToRenderStep("CameraCFrameUpdate", Enum.RenderPriority.Camera.Value + 1, function(dt: number)
 -- Her karede çalışacak bir fonksiyon tanımlar.
 local rootPart = character and character.PrimaryPart
 -- Karakterin ana parçasına referans alır.
 if not rootPart then return end.
 -- Ana parça yoksa fonksiyonu durdurur.

 if not courtFloor then.
 -- Mahkeme zemini tanımlanmamışsa.
 courtFloor = CollectionService:GetTagged("CourtFloor")[1]
 -- "CourtFloor" etiketiyle işaretlenmiş nesneyi alır.
 if not courtFloor then.
 -- Eğer mahkeme zemini bulunamazsa uyarı verir.
 warn("Court Floor doesn't exist! Please add one with tag 'CourtFloor', it is required for the camera to work properly!")
 return.
 end.
 end.

 local courtCF = courtFloor.CFrame
 -- Mahkeme zemininin koordinat çerçevesini alır.
 local start = courtCF + courtCF.LookVector * courtFloor.Size.Z/2
 -- Mahkeme zemininin ön tarafını hesaplar.
 local meta = courtCF - courtCF.LookVector * courtFloor.Size.Z/2
 -- Mahkeme zemininin arka tarafını hesaplar.

 local rootCF = rootPart.CFrame
 -- Karakterin ana parçasının koordinat çerçevesini alır.

 local zAngle = Utility.Map(rootCF.Position.Z, meta.Position.Z, start.Position.Z, -1, 1)
 -- Karakterin Z pozisyonunu -1 ile 1 arasında haritalar.

 if shared.cameraTarget then.
 -- Eğer ortak kamera hedefi tanımlanmışsa.
 camera.CFrame = camera.CFrame:Lerp(shared.cameraTarget[1].CFrame, Config.Camera.Responsiveness * dt)
 -- Kameranın konumunu hedefe doğru yumuşakça hareket ettirir.
 camera.FieldOfView = Utility.Lerp(camera.FieldOfView, shared.cameraTarget[2], mode.FieldOfViewResponsiveness * dt)
 -- Kameranın görüş alanını hedefe doğru yumuşakça değiştirir.
 return.
 end.
 camera.FieldOfView = Utility.Lerp(camera.FieldOfView, mode.FieldOfView, mode.FieldOfViewResponsiveness * dt)
 -- Kameranın görüş alanını yapılandırma ayarlarına göre değiştirir.

 if Config.Camera.Mode == "Isometric" then.
 -- Eğer kamera modu "Isometric" ise.
 camera.CFrame = camera.CFrame:Lerp(CFrame.new(Vector3.new(rootCF.Position.X - zoom, rootCF.Position.Y + zoom, rootCF.Position.Z + zoom * zAngle), rootCF.Position), Config.Camera.Responsiveness * dt)
 -- Kameranın konumunu izometrik açıya göre ayarlar.
 else.
 -- Diğer kamera modları için.
 camera.CFrame = camera.CFrame:Lerp(CFrame.new(rootCF.Position + Vector3.new(-zoom, zoom, zoom * zAngle), rootCF.Position), Config.Camera.Responsiveness * dt)
 -- Kameranın konumunu farklı bir açıya göre ayarlar.
 end.
end)

UserInputService.InputChanged:Connect(function(inputObject: InputObject)
 -- Kullanıcı girişindeki değişiklikleri dinler.
 if inputObject.UserInputType == Enum.UserInputType.MouseWheel then.
 -- Eğer giriş tipi fare tekerleği ise.
 zoom = math.clamp(zoom - mode.ZoomIncrement * inputObject.Position.Z, mode.ZoomRange.Min, mode.ZoomRange.Max)
 -- Zoom seviyesini fare tekerleği hareketine göre ayarlar.
 end.
end)

local lastTouchScale = nil.
-- Son dokunma ölçeğini saklamak için değişken.

UserInputService.TouchPinch:Connect(function(touchPositions, scale, velocity, state, gameProcessedEvent)
 -- Dokunmatik sıkıştırma hareketlerini dinler.
 if state == Enum.UserInputState.Change or state == Enum.UserInputState.End then.
 -- Eğer sıkıştırma değişir veya sona ererse.
 local difference = scale - lastTouchScale.
 -- Ölçek farkını hesaplar.

 zoom = math.clamp(zoom * (1 + difference), mode.ZoomRange.Min, mode.ZoomRange.Max)
 -- Zoom seviyesini sıkıştırma ölçeğine göre ayarlar.
 print(zoom)
 end.

 lastTouchScale = scale.
 -- Son dokunma ölçeğini günceller.
end)

Sorunu çözdüm hocam, yardımlarınız için teşekkür ederim. Nasıl çözdüğümü anlatayım. Benim istediğim profilimde bu place gözükmemesiydi bunu nasıl yaptım diye soracak olursanız attığım resimdeki gibi porfile giriyoruz. Orada yaratımlar bölümünde sizin oluşturduğunuz ve public olarak ayarladığınız placeler yer almakta yanındaki üç noktaya tıklayıp profilden kaldır demeniz gerekiyormuş. Bu kadar kolay olduğunu düşünmemiştim.
 

Dosya Ekleri

  • RobloxScreenShot20240610_223830565.png
    554,1 KB · Görüntüleme: 39
  • Ekran Görüntüsü (44).png
    485,9 KB · Görüntüleme: 40
Son düzenleyen: Moderatör:
Çözüm
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…