Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Скрипт Роблокс Студио!

Алия Низамова Ученик (114), на голосовании 5 месяцев назад
Я тут написал скрипт который делают так что объект в который помещен этот скрипт появлялся в рандомном месте на карте, а у меня появился вопрос может ли он появиться в другом блоке?
 local part = script.Parent 

local function spawnRandomly()
local randomX = math.random(-50, 50)
local randomY = math.random(0, 50)
local randomZ = math.random(-50, 50)

part.Position = Vector3.new(randomX, randomY, randomZ)
end

spawnRandomly()
Голосование за лучший ответ
VAZ 2110 Мыслитель (7843) 6 месяцев назад
может конечно
Алия НизамоваУченик (114) 6 месяцев назад
А как исправить?
Максим Дроздов Ученик (176) 6 месяцев назад
может
Алия НизамоваУченик (114) 6 месяцев назад
А как исправить?
Максим Дроздов Ученик (176) Алия Низамова, если тебе нужен именно рандом место, то никак. Шанс очень маленький. Если исправить хочешь, то позиции сама выбирай
Алия НизамоваУченик (114) 6 месяцев назад
А я написал теперь такой скрипт и теперь он телепортирует в рандомное место из двух, но телепортирет только в одно
 local object = script.Parent 

local randomNum = math.random(1, 2)

if randomNum == 1 then
object.Position = Vector3.new(-358.469, 108.791, -251.736)
elseif randomNum == 2 then
object.Position = Vector3.new(-349.226, 112.306, -219.551)
end
Максим Казаченко Ученик (145) 6 месяцев назад
Да, конечно, скрипт, который вы написали, может сделать так, что объект появится внутри другого блока на карте, если это место будет попадать в диапазон случайных координат, определенных вашим скриптом.

Однако, если вы хотите избежать такой ситуации и убедиться, что объект не появится внутри другого блока, вам нужно добавить дополнительную проверку перед установкой новой позиции. Например, вы можете использовать функцию FindPartOnRay() для проверки наличия других частей в месте, куда вы собираетесь переместить ваш объект. Если в этом месте уже есть другие части, вы можете сгенерировать новые случайные координаты и повторить попытку появления объекта.

Вот пример, как вы можете изменить ваш скрипт, чтобы добавить такую проверку:

lua

local part = script.Parent

local function spawnRandomly()
local randomX = math.random(-50, 50)
local randomY = math.random(0, 50)
local randomZ = math.random(-50, 50)

local newPosition = Vector3.new (randomX, randomY, randomZ)

-- Проверяем, нет ли других объектов в новой позиции
local ray = Ray.new (newPosition, Vector3.new (0, -1, 0) * 100) -- луч направлен вниз
local hitPart, hitPosition = workspace:FindPartOnRay(ray)

if hitPart then
-- Если найден другой объект, генерируем новые случайные координаты
spawnRandomly()
else
-- Если место свободно, перемещаем объект в новую позицию
part.Position = newPosition
end
end

spawnRandomly()

Этот скрипт будет проверять, есть ли объекты в месте, куда вы собираетесь переместить ваш объект. Если место занято другим объектом, он будет генерировать новые случайные координаты и повторять процесс до тех пор, пока не найдет свободное место для появления вашего объек
Dima U Ученик (189) 5 месяцев назад
да, конечно, как это может быть не понятным? и почему стоит тег C/C++? Roblox Studio использует Lua. Тут его нет, поэтому нужно выбрать "другие языки" не зассоряйте ленту
Похожие вопросы