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 */
|
/* eslint-disable roblox-ts/no-private-identifier */
|
||||||
|
|
||||||
|
import { CharacterRigR6 } from "@rbxts/character-promise"
|
||||||
import { InputKind } from "ReplicatedStorage/inputKind"
|
import { InputKind } from "ReplicatedStorage/inputKind"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The client ECS state.
|
* The client ECS state.
|
||||||
*/
|
*/
|
||||||
export class clientState {
|
export class clientState {
|
||||||
[index: string]: unknown,
|
character?: CharacterRigR6
|
||||||
debugEnabled = false
|
debugEnabled = false
|
||||||
isJumping = false
|
|
||||||
isRunning = false
|
isRunning = false
|
||||||
lastProcessedCommand?: InputKind
|
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 { start } from "ReplicatedStorage/ecs"
|
||||||
import { clientState } from "ReplicatedStorage/ecs/state"
|
import { clientState } from "ReplicatedStorage/ecs/state"
|
||||||
import { Host } from "ReplicatedStorage/hosts"
|
import { Host } from "ReplicatedStorage/hosts"
|
||||||
|
@ -7,5 +9,8 @@ const HOST = Host.Client
|
||||||
|
|
||||||
const ClientState = new clientState()
|
const ClientState = new clientState()
|
||||||
|
|
||||||
|
const player = Players.LocalPlayer
|
||||||
|
ClientState.character = (player.Character || player.CharacterAdded.Wait()[0]) as CharacterRigR6
|
||||||
|
|
||||||
setEnvironment(HOST)
|
setEnvironment(HOST)
|
||||||
start(HOST, ClientState)
|
start(HOST, ClientState)
|
Loading…
Add table
Add a link
Reference in a new issue