2016-12-07 1 views
2

В настоящее время я делаю игру, в которой вы нажимаете «L» на клавиатуре, и она меняется на ту часть, которую вы можете контролировать ... Но Странно то, что когда он приближается к игроку (не тот игрок, который породил его ...), он замерзает. Но на экране другого игрока он все еще может двигаться.-Roblox- Какая-то сбой камеры при переключении между игроком и частью

Я использовал локальный скрипт в рюкзаке плеера для смены кулачка ... , когда я переключаюсь на (cam.CameraSubject = part.Humanoid), он делает сбой/ошибку, которую я описываю, включая все остальные части внутри модель. Но если у меня есть (cam.CameraSubject = part (The model)), он работает, но он laggy ... Любые другие способы, которые я могу сделать? ??? Возможно ли, что часть, которую я использую, слишком мала ???

ответ

0

Я считаю, что это связано с тем, как ROBLOX имитирует физику. Когда часть физически моделируется, фактическая работа по моделированию части передается ближайшему клиенту. Это расстояние основано на том, где персонаж игрока находится в игровом мире. Если ни один из игроков не закрыт, сам сервер берет на себя ответственность за имитацию детали.

Таким образом, если у вас есть часть, которую игрок контролирует, на самом деле часть может быть физически контролируется компьютером другого игрока, если он ближе. Вероятно, поэтому ваша часть, кажется, замерзает, когда приближается к другому игроку.


Решение:SetNetworkOwner

Некоторое время назад, Roblox добавлены некоторые полезные методы, которые позволяют разработчикам игр для переопределения делегации по физике по умолчанию, что я описал выше. Используя BasePart:SetNetworkOwner(player), вы можете диктовать, какой клиент должен отвечать за обработку физики объекта.

Так все, что вам нужно сделать, это получить серверный скрипт для вызова SetNetworkOwner на этой управляющей части вы упомянули:

controlPart:SetNetworkOwner(player) 

Вот маленький пример. Когда игрок входит, часть создается и назначается игроку. Обратите внимание, как используется SetNetworkOwner. Когда игрок уходит, часть разрушена:

local controlPart = Instance.new("Part") 
local controlParts = {} 

function PlayerAdded(player) 
    local part = controlPart:Clone() 
    part.Parent = game.Workspace 
    controlParts[player] = part 

    -- Set the network owner to the player: 
    part:SetNetworkOwner(player) 

end 

function PlayerRemoving(player) 
    local part = controlParts[player] 
    if (part) then 
     part:Destroy() 
    end 
    controlParts[player] = nil 
end 

game.Players.PlayerAdded:connect(PlayerAdded) 
game.Players.PlayerRemoving:connect(PlayerRemoving) 

Примечание:

  • Вы не можете установить владелец сеть из привязанной части
  • Если установить владелец сетевой части, которая связана другим unanchored частей, эти части будут также наследовать владелец сети изменить

Пожалуйста, обратитесь к официальной странице Roblox Wiki на Network Ownership для дальнейшего Informa по этой теме.

Смежные вопросы