import { _decorator, Component, EventKeyboard, EventMouse, Input, input, KeyCode, Node, PhysicsSystem, Quat, RigidBody, v3, Vec3 } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('t1')
export class t1 extends Component {
z1:number = 0
start() {
input.on(Input.EventType.MOUSE_MOVE, this.onMouseMove, this)
input.on(Input.EventType.KEY_DOWN, this.onKeyDown, this)
input.on(Input.EventType.KEY_PRESSING, this.onKeyDown, this)
input.on(Input.EventType.KEY_UP, this.onKeyUp, this)
}
onMouseMove(event: EventMouse){
if (event.getButton() == 2) {
//获取本地坐标系下的旋转,用欧拉角表示
let fe1 = this.node.eulerAngles.x
let fe2 = this.node.eulerAngles.y
//鼠标在UI坐标系下的移动距离
let x1 = event.movementX * 0.5
let y1 = event.movementY * 0.5
//用欧拉角设置世界坐标系下的旋转
fe1 += -y1
fe2 += -x1
this.node.setRotationFromEuler(fe1, fe2, 0)
}
}
onKeyDown(event: EventKeyboard){
if (event.keyCode == KeyCode.KEY_W){
this.z1 = -2
}
}
onKeyUp(event: EventKeyboard){
if (event.keyCode == KeyCode.KEY_W){
this.z1 = 0
}
}
update(deltaTime: number) {
let g1 = v3(this.node.position.x*50*-1,this.node.position.y*50*-1,this.node.position.z*50*-1)
PhysicsSystem.instance.gravity = g1
let a1 = this.node.position
let a2 = v3(0,0,this.z1)
Vec3.transformQuat(a2,a2,this.node.rotation)
this.node.getComponent(RigidBody).setLinearVelocity(v3(a2.x,a2.y,a2.z))
//this.node.setPosition(a1.x+a2.x,a1.y+a2.y,a1.z+a2.z)
}
}