CocosCyberpunk/assets/scripts/test/test-actor-move.ts

63 lines
2.3 KiB
TypeScript
Raw Normal View History

2023-02-22 09:50:51 +08:00
import { _decorator, clamp, Component, EventKeyboard, EventMouse, Input, input, KeyCode, Node, v3, Vec3 } from 'cc';
import { ActorMove } from '../logic/actor/actor-move';
const { ccclass, property } = _decorator;
@ccclass('TestActorMove')
export class TestActorMove extends Component {
@property( {type:ActorMove, tooltip:' Reference Actor Move Slope.'} )
actorMove:ActorMove | undefined;
_dir:Vec3 = v3(0, 0, 0);
direction_up = 0;
direction_down = 0;
direction_left = 0;
direction_right = 0;
start() {
input.on(Input.EventType.KEY_DOWN, this.onKeyDown, this);
input.on(Input.EventType.KEY_UP, this.onKeyUp, this);
input.on(Input.EventType.MOUSE_DOWN, this.onMouseDown, this);
input.on(Input.EventType.MOUSE_MOVE, this.onMouseMove, this);
}
onKeyDown(event: EventKeyboard) {
if (event.keyCode === KeyCode.KEY_W || event.keyCode === KeyCode.ARROW_UP) this.direction_up = -1;
if (event.keyCode === KeyCode.KEY_S || event.keyCode === KeyCode.ARROW_DOWN) this.direction_down = 1;
if (event.keyCode === KeyCode.KEY_A || event.keyCode === KeyCode.ARROW_LEFT) this.direction_left = -1;
if (event.keyCode === KeyCode.KEY_D || event.keyCode === KeyCode.ARROW_RIGHT) this.direction_right = 1;
if (event.keyCode == KeyCode.SPACE) this.actorMove?.jump();
this.onMove();
}
onKeyUp(event: EventKeyboard) {
if (event.keyCode === KeyCode.KEY_W || event.keyCode === KeyCode.ARROW_UP) this.direction_up = 0;
if (event.keyCode === KeyCode.KEY_S || event.keyCode === KeyCode.ARROW_DOWN) this.direction_down = 0;
if (event.keyCode === KeyCode.KEY_A || event.keyCode === KeyCode.ARROW_LEFT) this.direction_left = 0;
if (event.keyCode === KeyCode.KEY_D || event.keyCode === KeyCode.ARROW_RIGHT) this.direction_right = 0;
this.onMove();
}
onMouseDown(event: EventMouse) {
}
onMouseMove(event: EventMouse) {
this.actorMove?.onRotation(event.movementX / 5, event.movementY / 10);
}
onMove() {
this._dir.x = this.direction_left + this.direction_right;
this._dir.z = this.direction_up + this.direction_down;
this._dir.y = 0;
//console.log('dir:', this._dir);
this.actorMove?.moveDirection(this._dir.normalize());
}
}