<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>@dream_creators</title><generator>teletype.in</generator><description><![CDATA[@dream_creators]]></description><link>https://teletype.in/@dream_creators?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=dream_creators</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/dream_creators?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/dream_creators?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sat, 04 Apr 2026 16:53:45 GMT</pubDate><lastBuildDate>Sat, 04 Apr 2026 16:53:45 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@dream_creators/SptJyFl4XZ1</guid><link>https://teletype.in/@dream_creators/SptJyFl4XZ1?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=dream_creators</link><comments>https://teletype.in/@dream_creators/SptJyFl4XZ1?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=dream_creators#comments</comments><dc:creator>dream_creators</dc:creator><title>Мини-карта в Roblox Studio</title><pubDate>Fri, 05 Jan 2024 15:49:21 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/3e/4b/3e4b62cd-c14a-4a23-8538-38b134183135.png"></media:content><category>ROBLOX</category><description><![CDATA[<img src="https://img1.teletype.in/files/0c/02/0c025b73-2b6e-4efb-80a5-700e3ac916eb.png"></img>Всем доброго времени суток! В этом уроке мы разберем «создание мини-карты в Roblox». В ней будут функции масштабирования, отметка игроков и открыть всю карту местности.]]></description><content:encoded><![CDATA[
  <p id="PeJk">Всем доброго времени суток! В этом уроке мы разберем «создание мини-карты в Roblox». В ней будут функции масштабирования, отметка игроков и открыть всю карту местности.</p>
  <p id="5SnR">Первым делом давайте откроем существующий стандартный проект в Roblox Studio, например <strong>«Suburban»</strong>.</p>
  <figure id="T54P" class="m_column">
    <img src="https://img1.teletype.in/files/0c/02/0c025b73-2b6e-4efb-80a5-700e3ac916eb.png" width="1904" />
  </figure>
  <p id="SWsM">Далее сделаем скриншот нашей карты с птичьего полета. Для этого:</p>
  <p id="tE7J">1.       Выбираем <strong>Camera</strong> и в <strong>свойствах</strong> ищем <strong>FieldofView</strong> и меняем <strong>с 70 на 1</strong></p>
  <p id="4UrY">2.       Далее выбираем <strong>Lighting</strong> и <strong>свойство GlobalShadows</strong> отключаем</p>
  <p id="Sm24">3.       В самом Lighting выбираем <strong>Atmosphere</strong> и <strong>Density</strong> с 0.3 меняем на 0</p>
  <p id="sHnl">Настройка готова, выбираем вкладку View и включаем <strong>Comand Bar</strong>. Внизу у нас открывается форма ввода и в него вставляем следующий код:</p>
  <p id="EBxI"><code>workspace.Camera.CFrame = CFrame.new(workspace.SpawnLocation.Position + Vector3.new(0, 30000, 0), workspace.SpawnLocation.Position)</code></p>
  <p id="j7uD">С помощью этого кода мы отдаляем камеру от спавна игрока на высоту 30000 юнитов (может вам понадобится и большее расстояние взять). Делаем скриншот, обрезаем лишнее и сохраняем на компьютер.</p>
  <figure id="SNnm" class="m_column">
    <img src="https://img4.teletype.in/files/73/bb/73bb53f3-2cd8-4fab-88ba-874613516220.png" width="592" />
    <figcaption>Скриншот можете сделать и не один, а несколько и склеить их уже в редакторе. Тогда у вас карта получится четче и будут видны все элементы.</figcaption>
  </figure>
  <h3 id="v30j">Теперь начнем делать нашу мини-карту.</h3>
  <p id="ce8G">1.       В StarterGui создадим <strong>ScreenGui</strong> и назовем его <u>«MinimapGui»</u></p>
  <p id="CLGI">2.       Далее в нашем ScreenGui создадим <strong>LocalScript</strong> <u>(“MinimapHandler”)</u> и <strong>Frame</strong> (<u>«MinimapClipping»</u>)</p>
  <p id="PFfF">3.       В Frame создадим <strong>UIAspectRatioConstraint, ImageLabel</strong> (<u>«MapImage»</u>) и <strong>ImageLaber</strong> (<u>«PlayerPointer»</u>)</p>
  <figure id="shty" class="m_column">
    <img src="https://img4.teletype.in/files/3a/b6/3ab6ca01-9651-4bc2-a941-0dce5eef375b.png" width="324" />
  </figure>
  <p id="McvH">Далее используйте следующие настройки для UI:</p>
  <figure id="nmf0" class="m_column">
    <img src="https://img4.teletype.in/files/fd/ed/fdedaf6c-8e40-4156-8a37-76f8f21dac26.png" width="378" />
  </figure>
  <figure id="qIBY" class="m_column">
    <img src="https://img2.teletype.in/files/5b/60/5b605de7-e43f-4e0f-939d-0892e515797f.png" width="375" />
  </figure>
  <figure id="z4bd" class="m_column">
    <img src="https://img4.teletype.in/files/f4/f1/f4f116c5-56db-40f6-bfda-fe0350c95715.png" width="384" />
  </figure>
  <p id="vI2m">Используем следующие ID для карты и курсора персонажа:</p>
  <p id="qCAU"><strong>MapImage:</strong> rbxassetid://15838194626 (В самом MapImage выберите Image и выберите свой скриншот карты. Если у вас roblox не попросит выбрать картинку, сохраните проект на сервере Roblox)</p>
  <p id="lNNU"><strong>PlayerPointer:</strong> rbxassetid://11450453200</p>
  <h3 id="HNVi">Переходим к локальному скрипту на работу с нашей картой</h3>
  <p id="ffb4"><code>-------------------------------Настройки------------------------------</code></p>
  <p id="Jnqc"><code>local zoom = 3</code></p>
  <p id="2ZUg"><code>local maxZoom = 20</code></p>
  <p id="Jokt"><code>local canScrollToZoom = true</code></p>
  <p id="zKAt"><code>local zoomSpeed = 1/7</code></p>
  <p id="470c"><code>local openMapKeys = {Enum.KeyCode.M, Enum.KeyCode.CapsLock}</code></p>
  <p id="vDDs"><code>local displayTeams = true</code></p>
  <p id="FCOR"><code>local markerSize = UDim2.new(0.04, 0, 0.04, 0)</code></p>
  <p id="7Fhc"><code>local defaultColor = Color3.fromRGB(115, 115, 115)</code></p>
  <p id="bDX8"><code>local allyColor = Color3.fromRGB(71, 134, 132)</code></p>
  <p id="srSx"><code>local enemyColor = Color3.fromRGB(116, 59, 59)</code></p>
  <p id="8i2I"><code>----------------------------------------------------------------------</code></p>
  <p id="iIFl"><code>--Переменные--</code></p>
  <p id="cQg4"><code>local frame = script.Parent:WaitForChild(&quot;MinimapClipping&quot;)</code></p>
  <p id="G0sa"><code>local map = frame:WaitForChild(&quot;MapImage&quot;)</code></p>
  <p id="gHll"><code>local plrPointer = frame:WaitForChild(&quot;PlayerPointer&quot;)</code></p>
  <p id="qKLh"><code>local uis = game:GetService(&quot;UserInputService&quot;)</code></p>
  <p id="4f8h"><code>local mapOpen = false</code></p>
  <p id="C4Im"><code>local xLowerBound, zLowerBound = 511, 511 – в этой и следующей строке указываем позицию края карты по одной диагонали</code></p>
  <p id="I85L"><code>local xUpperBound, zUpperBound = -511, -511</code></p>
  <p id="lJEF"><code>local realWidth = xUpperBound - xLowerBound</code></p>
  <p id="fNwz"><code>local realHeight = zUpperBound - zLowerBound</code></p>
  <p id="Yrsp"><code>local plr = game.Players.LocalPlayer</code></p>
  <p id="bMCm"><code>local char = plr.Character or plr.CharacterAdded:Wait()</code></p>
  <p id="hNln"><code>local hrp = char:WaitForChild(&quot;HumanoidRootPart&quot;)</code></p>
  <p id="8Ehk"><code>local runs = game:GetService(&quot;RunService&quot;)</code></p>
  <p id="C8IK"><code>local cam = workspace.CurrentCamera</code></p>
  <p id="k5KI"><code>local playerMarkersFolder = Instance.new(&quot;Folder&quot;)</code></p>
  <p id="DQY3"><code>playerMarkersFolder.Name = &quot;PLAYER MARKERS&quot;</code></p>
  <p id="C5by"><code>playerMarkersFolder.Parent = map</code></p>
  <p id="E2TH"><code>--Handling markers on the minimap, such as for other players or landmarks on the map</code></p>
  <p id="rcWf"><code>function createMarker(markerName, positionToDisplay, imageToDisplay, colorToDisplay)</code></p>
  <p id="yTd4"><code>local marker = playerMarkersFolder:FindFirstChild(markerName)</code></p>
  <p id="TYt0"><code>if not marker then</code></p>
  <p id="GoZ1"><code>marker = Instance.new(&quot;ViewportFrame&quot;)</code></p>
  <p id="7nyz"><code>marker.Name = markerName</code></p>
  <p id="npo6"><code>marker.BorderSizePixel = 0</code></p>
  <p id="iVf3"><code>marker.BackgroundTransparency = 1</code></p>
  <p id="tzJ0"><code>marker.Size = markerSize</code></p>
  <p id="jnac"><code>local imageDisplay = Instance.new(&quot;Part&quot;)</code></p>
  <p id="udNs"><code>imageDisplay.Shape = Enum.PartType.Cylinder</code></p>
  <p id="y6Iq"><code>imageDisplay.Orientation = Vector3.new(0, -90, 0)</code></p>
  <p id="aqJf"><code>imageDisplay.Size = Vector3.new(1, 1, 1)</code></p>
  <p id="nLeA"><code>imageDisplay.Color = colorToDisplay or defaultColor</code></p>
  <p id="sM9Y"><code>local decal = Instance.new(&quot;Decal&quot;, imageDisplay)</code></p>
  <p id="5nex"><code>decal.Face = Enum.NormalId.Right</code></p>
  <p id="KFte"><code>decal.Texture = imageToDisplay</code></p>
  <p id="xCmg"><code>local vpfCamera = Instance.new(&quot;Camera&quot;)</code></p>
  <p id="1FkP"><code>vpfCamera.CFrame = imageDisplay.CFrame * CFrame.Angles(0, math.rad(90), 0) + Vector3.new(0, 0, 1.25)</code></p>
  <p id="y7Ci"><code>marker.CurrentCamera = vpfCamera</code></p>
  <p id="v2yx"><code>vpfCamera.Parent = marker</code></p>
  <p id="u3mn"><code>imageDisplay.Parent = marker</code></p>
  <p id="tHcr"><code>end</code></p>
  <p id="uqj5"><code>local x = positionToDisplay.X - xLowerBound</code></p>
  <p id="WARv"><code>local z = positionToDisplay.Z - zLowerBound</code></p>
  <p id="KEqg"><code>local xScaled = x / realWidth</code></p>
  <p id="P7R9"><code>local zScaled = z / realHeight</code></p>
  <p id="O0o3"><code>marker.Position = UDim2.new(xScaled, 0, zScaled, 0)</code></p>
  <p id="ZckD"><code>marker.Parent = playerMarkersFolder</code></p>
  <p id="Aot4"><code>end</code></p>
  <p id="bvLu"><code>function destroyMarker(markerName)</code></p>
  <p id="fSRl"><code>local marker = playerMarkersFolder:FindFirstChild(markerName)</code></p>
  <p id="piBK"><code>if marker then</code></p>
  <p id="TVCW"><code>marker:Destroy()</code></p>
  <p id="NnVX"><code>end</code></p>
  <p id="2R3O"><code>end</code></p>
  <p id="xgG5"><code>runs.Heartbeat:Connect(function()</code></p>
  <p id="tQyW"><code>--Moving the map</code></p>
  <p id="M2WL"><code>if not mapOpen then</code></p>
  <p id="YYmh"><code>frame.Size = UDim2.new(0.168, 0, 0.311, 0)</code></p>
  <p id="hP8U"><code>frame.Position = UDim2.new(0.015, 0, 0.971, 0)</code></p>
  <p id="vvO1"><code>map.AnchorPoint = Vector2.new(0.5, 0.5)</code></p>
  <p id="37Mj"><code>map.Size = UDim2.new(zoom, 0, zoom, 0)</code></p>
  <p id="9kQn"><code>plrPointer.Size = UDim2.new(0.159, 0, 0.159, 0)</code></p>
  <p id="7zYr"><code>local guiSize = map.AbsoluteSize</code></p>
  <p id="QQ3j"><code>local plrPos = hrp.Position</code></p>
  <p id="mIab"><code>local plrX = xUpperBound - plrPos.X</code></p>
  <p id="HhTj"><code>local plrZ = zUpperBound - plrPos.Z</code></p>
  <p id="Tnjv"><code>local plrXscaled = plrX / realWidth</code></p>
  <p id="JEiW"><code>local plrZscaled = plrZ / realHeight</code></p>
  <p id="Yw9S"><code>plrXscaled = ((plrXscaled - 0.5) * zoom) + 0.5</code></p>
  <p id="Dw8i"><code>plrZscaled = ((plrZscaled - 0.5) * zoom) + 0.5</code></p>
  <p id="vKlZ"><code>map.Position = UDim2.new(plrXscaled, 0, plrZscaled, 0)</code></p>
  <p id="FqJh"><code>plrPointer.Position = UDim2.new(0.5, 0, 0.5, 0)</code></p>
  <p id="JooB"><code>else</code></p>
  <p id="lisF"><code>frame.Size = UDim2.new(0.259, 0, 0.605, 0)</code></p>
  <p id="UUzR"><code>frame.Position = UDim2.new(0.37, 0, 0.739, 0)</code></p>
  <p id="tR5h"><code>map.Size = UDim2.new(1, 0, 1, 0)</code></p>
  <p id="WWTH"><code>map.Position = UDim2.new(0.5, 0, 0.5, 0)</code></p>
  <p id="frlN"><code>plrPointer.Size = UDim2.new(0.08, 0, 0.08, 0)</code></p>
  <p id="sY7S"><code>local x = hrp.Position.X - xLowerBound</code></p>
  <p id="fa5m"><code>local z = hrp.Position.Z - zLowerBound</code></p>
  <p id="7Mnn"><code>local xScaled = x / realWidth</code></p>
  <p id="FJfH"><code>local zScaled = z / realHeight</code></p>
  <p id="5RNL"><code>plrPointer.Position = UDim2.new(xScaled, 0, zScaled, 0)</code></p>
  <p id="Sxyd"><code>end</code></p>
  <p id="yY9S"><code>--Rotating the pointer</code></p>
  <p id="VoiV"><code>plrPointer.AnchorPoint = Vector2.new(0.5, 0.5)</code></p>
  <p id="t2ij"><code>local plrRot = -hrp.Orientation.Y</code></p>
  <p id="OW9M"><code>plrPointer.Rotation = plrRot</code></p>
  <p id="MiHm"><code>--Displaying other players</code></p>
  <p id="Lnqh"><code>for i, plrInGame in pairs(game.Players:GetPlayers()) do</code></p>
  <p id="P1V6"><code>if plrInGame ~= plr and plrInGame.Character then</code></p>
  <p id="uZVo"><code>local inGameChar = plrInGame.Character</code></p>
  <p id="ktrE"><code>local inGameHRP = inGameChar:FindFirstChild(&quot;HumanoidRootPart&quot;)</code></p>
  <p id="Mxja"><code>if inGameHRP and inGameChar.Humanoid.Health &gt; 0 then</code></p>
  <p id="4Ror"><code>local playerImage = game.Players:GetUserThumbnailAsync(plrInGame.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48)</code></p>
  <p id="Nol5"><code>if displayTeams then</code></p>
  <p id="JXmR"><code>if plr.Team == plrInGame.Team then</code></p>
  <p id="4TG1"><code>createMarker(plrInGame.Name, inGameHRP.Position, playerImage, allyColor)</code></p>
  <p id="gOkR"><code>else</code></p>
  <p id="HvZd"><code>local worldPosition = inGameHRP.Position</code></p>
  <p id="o1ts"><code>local _, visible = cam:WorldToScreenPoint(worldPosition)</code></p>
  <p id="CCcj"><code>if visible then</code></p>
  <p id="zWpD"><code>local rayParams = RaycastParams.new()</code></p>
  <p id="YVUv"><code>rayParams.FilterType = Enum.RaycastFilterType.Blacklist</code></p>
  <p id="CPSG"><code>rayParams.FilterDescendantsInstances = {inGameChar, char}</code></p>
  <p id="L7cS"><code>local rayResult = workspace:Raycast(cam.CFrame.Position, inGameHRP.Position - cam.CFrame.Position, rayParams)</code></p>
  <p id="ptb0"><code>if not rayResult then</code></p>
  <p id="3UOs"><code>createMarker(plrInGame.Name, inGameHRP.Position, playerImage, enemyColor)</code></p>
  <p id="76Rx"><code>else</code></p>
  <p id="jJeP"><code>destroyMarker(plrInGame.Name)</code></p>
  <p id="tkH1"><code>end</code></p>
  <p id="jFdT"><code>else</code></p>
  <p id="SWt8"><code>destroyMarker(plrInGame.Name)</code></p>
  <p id="JpL2"><code>end</code></p>
  <p id="jwQE"><code>end</code></p>
  <p id="U3Ey"><code>else</code></p>
  <p id="9pld"><code>createMarker(plrInGame.Name, inGameHRP.Position, playerImage)</code></p>
  <p id="vSSG"><code>end</code></p>
  <p id="7S4M"><code>end</code></p>
  <p id="kVZI"><code>end</code></p>
  <p id="NgHa"><code>end</code></p>
  <p id="eTkx"><code>end)</code></p>
  <p id="HMFx"><code>--Detect inputs to expand/minimize the map</code></p>
  <p id="inNa"><code>uis.InputBegan:Connect(function(input, p)</code></p>
  <p id="IQg5"><code>if not p and table.find(openMapKeys, input.KeyCode) then</code></p>
  <p id="YRFN"><code>mapOpen = not mapOpen</code></p>
  <p id="qqct"><code>end</code></p>
  <p id="zjpI"><code>end)</code></p>
  <p id="YMIW"><code>--Detect inputs to change the zoom of the map</code></p>
  <p id="1NAT"><code>uis.InputChanged:Connect(function(input, p)</code></p>
  <p id="6X95"><code>if canScrollToZoom and input.UserInputType == Enum.UserInputType.MouseWheel then</code></p>
  <p id="1Mgy"><code>local mousePos = uis:GetMouseLocation()</code></p>
  <p id="d2GR"><code>local hovering = plr.PlayerGui:GetGuiObjectsAtPosition(mousePos.X, mousePos.Y)</code></p>
  <p id="shp2"><code>if table.find(hovering, frame) then</code></p>
  <p id="8kqs"><code>zoom = math.clamp(zoom + (input.Position.Z * zoomSpeed), 1, maxZoom)</code></p>
  <p id="CmYi"><code>end</code></p>
  <p id="yvuV"><code>end</code></p>
  <p id="S3l5"><code>end)</code></p>

]]></content:encoded></item></channel></rss>