Create me a roblox script that magnets unanchored parts to my mouse and allows me to control unanchored parts / grab them wherever my mouse is located when holding the E key, and that I throw them to the direction wherever my mouse is located when I press
Sure! Below is a basic Roblox LocalScript that will allow you to grab unanchored parts with your mouse while holding the "E" key and throw them in the direction of your mouse position when you click the left mouse button.
1. **Insert a LocalScript**: You can insert this LocalScript into StarterPlayerScripts or StarterGui.
2. **Script Code**: Copy and paste this code into the LocalScript.
```lua
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local userInputService = game:GetService("UserInputService")
local grabbedObject = nil
local distance = 5
-- Function to grab/ungrab object
local function toggleGrab()
if not grabbedObject then
local target = mouse.Target
if target and target:IsA("BasePart") and not target.Anchored then
grabbedObject = target
end
else
grabbedObject = nil -- Release the object
end
end
-- Function to update the position of the grabbed object
local function updateGrabbedObjectPosition()
if grabbedObject then
local mousePosition = mouse.Hit.Position
grabbedObject.Position = mousePosition + Vector3.new(0, distance, 0) -- Offset height
end
end
-- Function to throw the grabbed object
local function throwObject()
if grabbedObject then
local direction = (mouse.Hit.Position - grabbedObject.Position).unit
grabbedObject.Velocity = direction * 50 -- Adjust speed multiplier as necessary
grabbedObject = nil
end
end
-- Connect Input Began for grabbing
userInputService.InputBegan:Connect(function(input, gameProcessed)
if not gameProcessed then
if input.KeyCode == Enum.KeyCode.E then
toggleGrab()
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
throwObject()
end
end
end)
-- Connect RenderStepped to update position every frame
game:GetService("RunService").RenderStepped:Connect(function()
updateGrabbedObjectPosition()
end)
```
### Explanation:
- **Toggle Grab**: When you hold down the "E" key, the script checks if you are looking at an unanchored part. If you are, it “grabs” that part. Releasing the key releases it.
- **Update Position**: Every frame, if you have a part grabbed, it positions the part at your mouse's location, with a slight vertical offset.
- **Throwing the Object**: When you click the left mouse button while holding a grabbed object, it applies velocity to throw it in the direction of the mouse.
### Important Notes:
- Ensure the parts you want to grab are unanchored.
- Be cautious while using this in your game, as this is a basic script and may need enhancements depending on your game's architecture and rules.
- You may want to adjust the velocity multiplier to change the throwing force to your liking.
This code may require adjustment based on your project’s specific needs or to integrate it with other functions. Happy scripting!