add character to clientstate and add sprint system
This commit is contained in:
parent
d5b77a9044
commit
d83ddf4e53
3 changed files with 41 additions and 2 deletions
|
@ -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
|
||||
}
|
||||
|
|
34
src/ReplicatedStorage/ecs/systems/client/sprint.ts
Normal file
34
src/ReplicatedStorage/ecs/systems/client/sprint.ts
Normal 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
|
|
@ -1,3 +1,5 @@
|
|||
import { CharacterRigR6 } from "@rbxts/character-promise"
|
||||
import { Players } from "@rbxts/services"
|
||||
import { start } from "ReplicatedStorage/ecs"
|
||||
import { clientState } from "ReplicatedStorage/ecs/state"
|
||||
import { Host } from "ReplicatedStorage/hosts"
|
||||
|
@ -7,5 +9,8 @@ const HOST = Host.Client
|
|||
|
||||
const ClientState = new clientState()
|
||||
|
||||
const player = Players.LocalPlayer
|
||||
ClientState.character = (player.Character || player.CharacterAdded.Wait()[0]) as CharacterRigR6
|
||||
|
||||
setEnvironment(HOST)
|
||||
start(HOST, ClientState)
|
Loading…
Add table
Add a link
Reference in a new issue