I'm trying to recreate the VehicleSeat by using a normal Seat. It has intvalues inside that I can use to do things beyond what a VehicleSeat can do (for instance, a value for upwards/downwards movement, or even some sort of gearshift).
Here's the script currently.
01 | w = Enum.KeyCode.W |
02 | s = Enum.KeyCode.S |
03 |
04 | Seat = script.Parent |
05 | Thrust = Seat.Thrust.Value |
06 | ------------------------------------------- |
07 | function ThrustControl(inputObject, gameprocessedEvent) |
08 | if inputObject.KeyCode = = w then |
09 | Thrust = 1 |
10 | elseif inputObject.KeyCode = = s then |
11 | Thrust = - 1 |
12 | elseif inputObject.KeyCode ~ = w or s then |
13 | Thrust = 0 |
14 | end |
15 | end |
16 | ------------------------------------------- |
17 | game:GetService( "UserInputService" ).InputBegan:connect(ThrustControl) |
When I test it out, the thrust value should be changing its' value when I press the W or S key, and also reverting to zero when I'm not pressing either. It doesn't change at all.
Anybody know why this doesn't work?
On line 05 you defined Thrust as a value. Therefore when you set that value it doesn't set the actual property of the the object, all that defining it did is get the value so it isn't changing the value.
1 | Seat = script.Parent |
2 | Thrust = Seat.Thrust.Value --Defining the value of a property |
To fix the code simply do the following:
01 | w = Enum.KeyCode.W |
02 | s = Enum.KeyCode.S |
03 |
04 | Seat = script.Parent |
05 | Thrust = Seat.Thrust --Define the value object! |
06 | ------------------------------------------- |
07 | function ThrustControl(inputObject, gameprocessedEvent) |
08 | if inputObject.KeyCode = = w then |
09 | Thrust.Value = 1 --Set value |
10 | elseif inputObject.KeyCode = = s then |
11 | Thrust.Value = - 1 --Set value |
12 | elseif inputObject.KeyCode ~ = w or s then |
13 | Thrust.Value = 0 --Set value |
14 | end |
15 | end |
16 | ------------------------------------------- |
17 | game:GetService( "UserInputService" ).InputBegan:connect(ThrustControl) |