12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import CannonBody from '@RE/BeardScript/rogue-cannon/Components/CannonBody.re';
- import GetForwardVector from 'Assets/Library/GetForwardVector';
- import * as CANNON from 'cannon-es';
- import * as RE from 'rogue-engine';
- import * as THREE from 'three'
- import FloorCheckComponent from './FloorCheckComponent.re';
- export default class CannonMovementController extends RE.Component {
- @RE.props.num() speed: number = 1
- @RE.props.num() jumpStrength: number = 3
- vectorCalculator: GetForwardVector
- bodyComponent: CannonBody
- awake() {
- this.bodyComponent = RE.getComponent(CannonBody, this.object3d) as CannonBody
- }
- start() {
- this.vectorCalculator = new GetForwardVector(RE.Runtime.camera)
- }
- update() {
- let direction = {x:0, y: 0, z: 0}
- if (RE.Input.keyboard.getKeyPressed("KeyW")) {
- direction.x += 1
- }
- if (RE.Input.keyboard.getKeyPressed("KeyA")) {
- direction.y += -1
- }
- if (RE.Input.keyboard.getKeyPressed("KeyS")) {
- direction.x += -1
- }
- if (RE.Input.keyboard.getKeyPressed("KeyD")) {
- direction.y += 1
- }
- if (RE.Input.keyboard.getKeyPressed("Space")) {
- direction.z = 1
- }
- if(direction.x != 0) {
- this.moveForward(direction.x * this.speed)
- }
- if(direction.y != 0) {
- this.moveRight(direction.y * this.speed)
- }
- if(direction.z != 0) {
- const floorCheckComponent = RE.getComponent(FloorCheckComponent, this.object3d)
- if(floorCheckComponent) {
- if(floorCheckComponent.isOnFloor) {
- this.bodyComponent.body.applyImpulse(new CANNON.Vec3(0, this.jumpStrength, 0), new CANNON.Vec3(this.object3d.position.x, this.object3d.position.y,this.object3d.position.z))
- // this.bodyComponent.body.applyForce(new CANNON.Vec3(0,1,0).scale(this.jumpStrength))
- }
- }
- }
- }
- moveForward(distance) {
- let scaledVelocity = new THREE.Vector3()
- scaledVelocity.addScaledVector(this.vectorCalculator.getForward(), distance)
- this.bodyComponent.body.applyForce(new CANNON.Vec3(scaledVelocity.x, scaledVelocity.y, scaledVelocity.z))
- // this.object3d.position.addScaledVector(this.vectorCalculator.getForward(), distance);
- }
- moveRight(distance) {
- let scaledVelocity = new THREE.Vector3()
- scaledVelocity.addScaledVector(this.vectorCalculator.getRight(), distance)
- this.bodyComponent.body.applyForce(new CANNON.Vec3(scaledVelocity.x, scaledVelocity.y, scaledVelocity.z))
- // this.object3d.position.addScaledVector(this.vectorCalculator.getRight(), distance);
- }
- }
- RE.registerComponent(CannonMovementController);
|