Typescript bindings for EgoMoose's Rbx-Gravity-Controller with ground normal finding by EmilyBendsSpace
- Add
installGravityControllerClass
to theonInit
of some@Service
import { OnInit, Service } from '@flamework/core'
import { installGravityControllerClass } from '@rbxts/gravity-controller'
@Service()
export class GravityService implements OnInit {
onInit() {
// Install EgoMoose's Rbx-Gravity-Controller https://github.com/EgoMoose/Rbx-Gravity-Controller
installGravityControllerClass()
}
}
- Setup a
GravityController
in some@Controller
import { Controller, OnStart } from '@flamework/core'
import {
getGravityControllerUp,
GravityController,
GravityControllerClass,
installGravityControllerClass,
} from '@rbxts/gravity-controller'
import { Players } from '@rbxts/services'
@Controller({})
export class PlayerGravityController implements OnStart {
gravityControllerClass: GravityControllerClass | undefined
gravityController: GravityController | undefined
onStart() {
this.gravityControllerClass = installGravityControllerClass()
Players.LocalPlayer.CharacterAdded.Connect((_character) => {
this.disableGravityController()
this.enableGravityController()
})
if (Players.LocalPlayer.Character) this.enableGravityController()
}
disableGravityController() {
this.gravityController?.Destroy()
this.gravityController = undefined
}
enableGravityController() {
if (this.gravityController || !this.gravityControllerClass) return
const gravityController = new this.gravityControllerClass(Players.LocalPlayer)
// Use EmilyBendsSpace's getGroundNormal() to walk up walls
gravityController.GetGravityUp = getGravityControllerUp
this.gravityController = gravityController
}
}