add character to clientstate and add sprint system

This commit is contained in:
Reid 2023-07-20 15:09:09 -07:00
parent d5b77a9044
commit d83ddf4e53
3 changed files with 41 additions and 2 deletions

View file

@ -1,14 +1,14 @@
/* eslint-disable roblox-ts/no-private-identifier */
import { CharacterRigR6 } from "@rbxts/character-promise"
import { InputKind } from "ReplicatedStorage/inputKind"
/**
* The client ECS state.
*/
export class clientState {
[index: string]: unknown,
character?: CharacterRigR6
debugEnabled = false
isJumping = false
isRunning = false
lastProcessedCommand?: InputKind
}

View file

@ -0,0 +1,34 @@
import { World } from "@rbxts/matter"
import { match } from "@rbxts/variant"
import { clientState } from "ReplicatedStorage/ecs/state"
function sprint(_: World, client: clientState): void {
if (client.lastProcessedCommand !== undefined) {
match(client.lastProcessedCommand, {
KeyDown: ({ key }) => {
if (key === Enum.KeyCode.LeftControl) {
client.isRunning = true
}
},
KeyUp: ({ key }) => {
if (key === Enum.KeyCode.LeftControl) {
client.isRunning = false
}
},
default: () => {
// do nothing
}
})
}
if (client.isRunning && client.character) {
client.character.Humanoid.WalkSpeed = 24
return
}
if (client.character) {
client.character.Humanoid.WalkSpeed = 16
}
}
export = sprint