Как сделать скользящий кирпич, который исчезает в другом на ROBLOX - PullRequest
0 голосов
/ 24 ноября 2010

Должен ли я использовать положение тела?BodyVelocity?ПОЖАЛУЙСТА, ПОМОГИТЕ

Ответы [ 6 ]

1 голос
/ 25 ноября 2010

Есть много способов сделать что-то подобное, если я понимаю, что вы хотите попробовать.Чтобы эффективно «скользить в другой кирпич и исчезнуть», вы можете сделать 2 вещи:

1) Иметь мощный BodyVelocity в направлении другого кирпича, у которого CanCollide равен 0. Когда кирпич делаетсвязаться с другим, он будет ждать некоторое время, а затем удалить себя.

2) Вы можете переместить кирпич, используя CFrame, находя угол, используя CFrame.new (Brick1.Pos, Brick2.Pos)и использование системы фреймов для добавления этого CFrame к Brick1 CFrame, создавая эффект «движения».Вы бы убрали кирпич, когда "рамки" закончились.

0 голосов
/ 08 мая 2013

Вы можете создать сценарий onClick, который увеличит скорость кирпича, чтобы сдвинуть второй кирпичик на место, а затем создаст новый сценарий onClick, который уменьшит влияние скорости, чтобы он вытащил второй кирпич обратно. .

0 голосов
/ 04 января 2013

Из того, что я могу сказать, вы хотите использовать CFrame. Чтобы два кубика могли двигаться в одном и том же пространстве (оба куба имеют CanCollide = true), вы ДОЛЖНЫ использовать CFrame. Все экземпляры "Body" (BodyVelocity, BodyPosition) применяют силу к кирпичам и, следовательно, не могут заставить их двигаться в одном и том же пространстве.

Если вы хотите раздвижную дверь, вы можете использовать этот скрипт:

local StartPosition = script.Parent.CFrame
local ToPosition = workspace.TargetPart.CFrame -- Make sure this is right

function Open()
    for i=0,100,1 do
        script.Parent.CFrame = StartPosition + CFrame.new(StartPosition.p,ToPosition.p).lookVector *     ((StartPosition.p-ToPosition.p).magnitude/100) * i
        wait(0.01)
    end
end

function Close()
    for i=100,0,-1 do
        script.Parent.CFrame = StartPosition + CFrame.new(StartPosition.p,ToPosition.p).lookVector *     ((StartPosition.p-ToPosition.p).magnitude/100) * i
        wait(0.01)
    end
end

local Moving = false
local IsOpen = false
function Toggle()
    if Moving then return end
    Moving = true

    if IsOpen then
        Close()
    else
        Open()
    end
    IsOpen = not IsOpen

    Moving = false
end

-- Following code is just for testing
Toggle()
wait(1)
Toggle()

Убедитесь, что второй кирпич больше первого.

0 голосов
/ 23 апреля 2011

используйте конвейерную ленту, чтобы вставить его, сделать канколлид из кирпича и сделать его жирнее с

0 голосов
/ 25 ноября 2010

Ну, есть еще один более реалистичный и менее вероятный сбой способ, вы можете просто сделать кирпич, и по функции, например onClick (), вы можете сделать так, чтобы он исчез, и привязанный кирпич стал видимым, используя прозрачность, и сделатьИсходный кирпич nonCanCollide и позиция нового заменителя также движутся в этом направлении. Я бы предпочел использовать BodyPosition, потому что он работает для позиции и может использоваться для закрепленных и незакрепленных кирпичей (не так же, как для незанятых), а bodyvelocity для незанятых.кирпичи, чтобы двигаться в каком-то направлении, что является своего рода утешением, ну, я говорю, что менее вероятно, что он потерпит неудачу, потому что если замена не удалась, то оригинальный кирпич все еще там, и вы можете сделать резервную копию сценария, чтобы сохранить его, если саб разбивается.

Я надеюсь, что это помогло.-Orbian.

0 голосов
/ 24 ноября 2010

Что значит «исчезает в другом»? Вы можете использовать множество способов имитировать скольжение. Вы можете использовать CFrame, BodyVelocity, BodyForce или даже BodyPosition. Вы можете даже сделать кирпич без трения и скользить по нему. Есть что-нибудь еще, что вам нужно знать? Если это так, комментарий.

...