Alright. I'm back at it again with another question. I will try to be as detailed as possible.
Ok wonderful community of scriptinghelpers, I shall provide code and then explain what it's purpose is for, and then describe my issue.
This is the entirety of the code inside of the localscript I've created.
function onKeyPress(inputObject, gameProcessedEvent) if inputObject.KeyCode == Enum.KeyCode.J then print("Titan Shift in action") a = game.ReplicatedStorage.AeikeTitan:Clone() a.Parent = game.Workspace end end game:GetService("UserInputService").InputBegan:connect(onKeyPress)
Here is my hiearchy.
https://gyazo.com/695496ec3fa9d3e632dd1ce6bdea40fd
Now, what I am currently aiming to do in this little project I've been working on is to make it so that when a player presses J, a custom-build creature I've put in ReplicatedStorage clones itself and the clone's parent becomes the Workspace. And from there, the creature would teleport to the players position. And then, from there, the player would teleport into the creatures neck. What happens next will be saved for another question.
INFO:
My creature's neck part is named "Neck". My creature's name in hiearchy is AeikeTitan.
How exactly do I make the teleportation of the creature to the player, and then the player to the neck of the creature, happen?
And again, using a localscript for this. Any help would be greatly appreciated!
Hello Aeike,
In order to achieve what you outlined, you will have to have two scripts:
A server script to spawn the monster, place it next to the player, and teleport the player onto it, and:
A client script to tell the server script when to do so (which already exists)
As well as a RemoteEvent, which we will call "SpawnCreature" and place in ReplicatedStorage. Observe:
Local Script:
local SpawnCreature = game.ReplicatedStorage:WaitForChild("SpawnCreature") function onKeyPress(inputObject, gameProcessedEvent) if inputObject.KeyCode == Enum.KeyCode.J then SpawnCreature:FireServer() end end game:GetService("UserInputService").InputBegan:connect(onKeyPress)
Server Script:
local AeikeModel = game.ReplicatedStorage:WaitForChild("AeikeTitan") local SpawnCreature = game.ReplicatedStorage:WaitForChild("SpawnCreature") -- Provided the player's character is alive, spawn a creature and teleport the player onto its neck. local function OnSpawnCreatureFired(player) local character = player.Character -- Check to see if the character exists and is alive local characterIsAlive = ( character and character:FindFirstChild("Humanoid") and character.Humanoid.Health > 0 ) if (characterIsAlive) then local creatureClone = AeikeModel:Clone() -- Finds the creature's neck, even if it isn't directly under the root model local creatureNeck = creatureClone:FindFirstChild("Neck", true) -- We assume the Torso exists because the character is alive creatureClone:MoveTo(character.Torso.Position) -- If the Neck exists, teleport the character three studs above it. if (creatureNeck) then character.Torso.CFrame = (creatureNeck.CFrame + Vector3.new(0, 3, 0)) end end end -- When SpawnCreature is fired by the client, run OnSpawnCreatureFired SpawnCreature.OnServerEvent:Connect(OnSpawnCreatureFired)
Now, the reason for doing this with two scripts is this: Changes in the workspace made by LocalScripts will not replicate (be passed onto) other clients (players.) Your character would see the model, but others would not. By doing this with a ServerScript, we ensure that everything is done on the server, so that everyone sees the change. The RemoteEvent allows the client to tell the server when to spawn the creature, which is why it is so crucial.
I hope this helps. Let me know if anything comes up (I likely made a mistake. It's three in the morning...) Have a nice day, Aeike, and best of luck with your game!
Warm regards,
tkcmdr
To teleport a Model, use the MoveTo function
a = game.ReplicatedStorage.AeikeTitan:Clone() a.Parent = game.Workspace a:MoveTo(game:GetService("Players").LocalPlayer.Character.Head.Position)
I think you can figure out what you want to do from there.