I want to script a bike for my latest game so that it will be supported on the Iphone/Android devices (Yes, I said Android! I found a WORKING .apk file)
All I need to know is what are the inputs Roblox see when on these devices?
Here is the basic bikes script.
Tool = script.Parent Handle = Tool:WaitForChild("Handle") Players = game:GetService("Players") EngineSound = Handle:WaitForChild("Running") HonkSound = Handle:WaitForChild("Honk") HoldAnim = Tool:WaitForChild("HoldAnim") SoundInput = Tool:WaitForChild("SoundInput") Left = false Right = false Up = false Down = false LastSpace = 0 SmokePart = Instance.new("Part") SmokePart.Transparency = 1 SmokePart.Size = Vector3.new(0, 0, 0) ExhaustSmoke = Instance.new("Smoke") ExhaustSmoke.Parent = SmokePart ExhaustSmoke.Size = 0.1 ExhaustSmoke.RiseVelocity = 0.01 ExhaustSmoke.Color = Color3.new(0.5, 0.5, 0.5) Acceleration = 10 Deceleration = 10 TurnAlpha = 0.30 AlphaDampening = 0.2 Equipped = false LastPosition = nil ActualVelocity = Vector3.new(0, 0, 0) FrontWheel = Instance.new("Part") FrontWheel.FormFactor = "Custom" FrontWheel.CanCollide = false FrontWheel.Size = Vector3.new(0, 0, 0) WheelMesh = Instance.new("SpecialMesh") WheelMesh.TextureId = "http://www.roblox.com/asset/?id=157152110" WheelMesh.Scale = Vector3.new(1, 1, 1) Light = FrontWheel:Clone() local BackWheel = FrontWheel:Clone() CurrentSpeed = 0 TurnSpeed = 0 TurnSpeedAim = 5 function ThrustUpdater() while Equipped do local Direction = Torso.CFrame.lookVector Direction = Vector3.new(Direction.x, 0, Direction.z).unit ThrustForce.velocity = (Direction * CurrentSpeed) EngineSound.Pitch = (1 + (math.abs(CurrentSpeed / 50) * 1)) if FrontMotor then FrontMotor.DesiredAngle = (999999999 * (-CurrentSpeed / math.abs(CurrentSpeed))) FrontMotor.MaxVelocity = (CurrentSpeed / 250) if BackMotor then BackMotor.DesiredAngle = FrontMotor.DesiredAngle BackMotor.MaxVelocity = FrontMotor.MaxVelocity end end RotationForce.angularvelocity = Vector3.new(0, TurnSpeed, 0) if math.abs(TurnSpeed) > AlphaDampening then TurnSpeed = (TurnSpeed - (AlphaDampening * (math.abs(TurnSpeed) / TurnSpeed))) else TurnSpeed = 0 end local LeanAmount = (-TurnSpeed * (math.pi / 6) / 4) if not Forwards or Back then CurrentSpeed = (CurrentSpeed * 0.99 ) end local XZAngle = math.atan2(Torso.CFrame.lookVector.z, 0, Torso.CFrame.lookVector.x) TurnGyro.cframe = CFrame.Angles((LeanAmount * Direction.x), 0, (LeanAmount * Direction.z)) ExhaustSmoke.Opacity = (math.min(math.abs(CurrentSpeed), 10) / 10) * 0.5 if LastPosition then local NPos = Vector3.new(Torso.CFrame.p.x, 0, Torso.CFrame.p.z) local MySpeed = Vector3.new(FakeHandle.Velocity.X, 0, FakeHandle.Velocity.Z).magnitude local VelocityDifference = math.abs((MySpeed - (ThrustForce.velocity.magnitude))) if MySpeed > 3 and ThrustForce.velocity.magnitude > 3 and VelocityDifference > (0.7 * ThrustForce.velocity.magnitude) then CurrentSpeed = (CurrentSpeed * 0.9) end end LastPosition = Vector3.new(Torso.CFrame.p.x, 0, Torso.CFrame.p.z) wait(1 / 60) end end function GetTotalMass(Parent) local TotalMass = 0 for i, v in pairs(Parent:GetChildren()) do if v:IsA("BasePart") then TotalMass = TotalMass + v:GetMass() end GetTotalMass(v) end return TotalMass end function Equipped(Mouse) Character = Tool.Parent Player = Players:GetPlayerFromCharacter(Character) Humanoid = Character:FindFirstChild("Humanoid") Torso = Character:FindFirstChild("Torso") if not Player or not Humanoid or Humanoid.Health == 0 or not Torso then return end wait() Mouse.KeyDown:connect(function(Key) local Key = Key:lower() if Key == "w" then Forwards = true while Forwards do CurrentSpeed = math.min(70, (CurrentSpeed + (Acceleration * (1 / 30)))) wait(1 / 30) end elseif Key == "a" then Left = true while Left do TurnSpeed = math.min(5, (TurnSpeed + (TurnAlpha))) wait(1 / 30) end elseif Key == "s" then Back = true while Back do if CurrentSpeed > 0 then CurrentSpeed = math.max(-20, (CurrentSpeed - (Deceleration * 2.8 * (1 / 30)))) else CurrentSpeed = math.max(-20, (CurrentSpeed - (Deceleration * (1 / 30)))) end wait(1 / 30) end elseif Key == "d" then Right = true while Right do TurnSpeed = math.max(-5, (TurnSpeed - (TurnAlpha))) wait(1 / 30) end elseif Key == " " then if (LastSpace == 0 or (tick() - LastSpace) > 1.9) then LastSpace = tick() local BodyForce = Instance.new("BodyForce") BodyForce.force = Vector3.new(0, (((GetTotalMass(Character) * 196.20) * 4) * 4), 0) BodyForce.Parent = FakeHandle wait(0.1) BodyForce:Destroy() end elseif Key == "x" then SpotLight.Enabled = not SpotLight.Enabled elseif Key == "h" then SoundInput.Value = "Name = " .. HonkSound.Name .. ", " .. "IsPlaying = true" end end) Mouse.KeyUp:connect(function(Key) local Key = Key:lower() if Key == "w" then Forwards = false elseif Key == "a" then Left = false elseif Key == "s" then Back = false elseif Key == "d" then Right = false end end) FakeHandle = Handle:Clone() FakeHandle.Name = "FakeHandle" FakeHandle:WaitForChild("Mesh").MeshId = "http://www.roblox.com/asset/?id=158071925" FakeHandle.Parent = Tool FakeHandle.CFrame = Torso.CFrame Handle.Transparency = 1 FrontWheel.Parent = FakeHandle FrontMotor = Instance.new("Motor6D") FrontMotor.C0 = CFrame.Angles(0, math.pi / 2, 0) + Vector3.new(0, - 1.1, - 2.85) FrontMotor.C1 = CFrame.Angles(0, - math.pi / 2, 0) FrontMotor.Part0 = FakeHandle FrontMotor.Part1 = FrontWheel FrontMotor.Parent = FakeHandle FrontWheelMesh = WheelMesh:Clone() FrontWheelMesh.MeshId = "http://www.roblox.com/asset?id=157152145" FrontWheelMesh.Parent = FrontWheel BackWheel.Parent = FakeHandle BackMotor = Instance.new("Motor6D") BackMotor.C0 = CFrame.Angles(0, math.pi / 2, 0) + Vector3.new(0, - 1.1, 2.9) BackMotor.C1 = CFrame.Angles(0, - math.pi / 2, 0) BackMotor.Part0 = FakeHandle BackMotor.Part1 = BackWheel BackMotor.Parent = FakeHandle BackWheelMesh = WheelMesh:Clone() BackWheelMesh.MeshId = "http://www.roblox.com/asset?id=157152190" BackWheelMesh.Parent = BackWheel Light.Parent = FakeHandle LightWeld = Instance.new("Weld") LightWeld.C0 = CFrame.new(0, 0, 0, 0, 0, - 1, 0, 1, 0, 1, 0, 0) LightWeld.C1 = CFrame.new(-0.140708923, -0.749996185, -0.9377985, -1.63912773e-007, -1.27675008e-008, -1.00000024, -2.05633661e-008, 0.99999994, 3.65663944e-009, 0.999999881, 5.65337004e-008, -7.4505806e-008) LightWeld.Part0 = FakeHandle LightWeld.Part1 = Light LightWeld.Parent = FakeHandle SpotLight = Instance.new("SpotLight") SpotLight.Brightness = 5 SpotLight.Angle = 45 SpotLight.Color = Color3.new(255 / 255, 252 / 255, 153 / 255) SpotLight.Parent = Light SpotLight.Range = 40 CurrentSpeed = 0 TurnSpeed = 0 Equipped = true Handle.CFrame = Torso.CFrame Humanoid.PlatformStand = true RotationForce = Instance.new("BodyAngularVelocity") RotationForce.maxTorque = Vector3.new(0, math.huge, 0) RotationForce.angularvelocity = Vector3.new(0, 0, 0) RotationForce.Parent = Torso ThrustForce = Instance.new("BodyVelocity") ThrustForce.maxForce = Vector3.new(math.huge, 0, math.huge) ThrustForce.velocity = Vector3.new(0, 0, 0) ThrustForce.P = 100 ThrustForce.Parent = FakeHandle TurnGyro = Instance.new("BodyGyro") TurnGyro.maxTorque = Vector3.new(5000, 0, 5000) TurnGyro.P = 300 TurnGyro.D = 100 TurnGyro.Parent = Torso Spawn(ThrustUpdater) if HoldAnimTrack then HoldAnimTrack:Stop() end HoldAnimTrack = Humanoid:LoadAnimation(HoldAnim) HoldAnimTrack:Play() Spawn(function() Torso.Anchored = true Torso.CFrame = Torso.CFrame + Vector3.new(0, 3, 0) TorsoWeld = Instance.new("Weld") TorsoWeld.C0 = CFrame.Angles(0, 0, 0) + Vector3.new(0, -1.6, -0.7) TorsoWeld.Part0 = Torso TorsoWeld.Part1 = FakeHandle TorsoWeld.Parent = FakeHandle FakeHandle.CanCollide = true wait(0.1) FakeHandle.CanCollide = true Torso.Anchored = false Torso.CFrame = Torso.CFrame + Vector3.new(0, 3, 0) end) SmokePart.Parent = FakeHandle local TWeld = Instance.new("Weld") TWeld.C0 = CFrame.new(0, -0.85, -4, 1, 0, 0, 0, 1, 0, 0, 0, 1) TWeld.Part0 = SmokePart TWeld.Part1 = FakeHandle TWeld.Parent = SmokePart SoundInput.Value = "Name = " .. EngineSound.Name .. ", " .. "IsPlaying = true" Humanoid.WalkSpeed = 0 end function Unequipped() Equipped = false if SmokePart then SmokePart.Parent = nil end if FakeHandle then FakeHandle:Remove() FakeHandle = nil end Handle.Transparency = 0 Forwards = false Left = false Back = false Right = false if RotationForce then RotationForce:Destroy() end if ThrustForce then ThrustForce:Destroy() end if TurnGyro then TurnGyro:Destroy() end if HoldAnimTrack then HoldAnimTrack:Stop() end if TorsoWeld then TorsoWeld:Destroy() end if EngineSound then SoundInput.Value = "Name = " .. EngineSound.Name .. ", " .. "IsPlaying = false" end Humanoid.WalkSpeed = 16 Humanoid.PlatformStand = false end Tool.Unequipped:connect(Unequipped) Tool.Equipped:connect(Equipped)