import { _decorator, CharacterController, Component, EventKeyboard, EventMouse, find, input, Input, KeyCode, misc, Node, quat, Quat, RigidBody, v3, Vec3 } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('s1')
export class s1 extends Component {
z1:number = 0
b1: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_UP, this.onKeyUp, this)
}
onMouseMove(event: EventMouse){
if (event.getButton() == 2) {
this.z1 += event.movementX*-1
}
}
onKeyDown(event: EventKeyboard){
if (event.keyCode == KeyCode.KEY_W){
this.b1 = 1
}
}
onKeyUp(event: EventKeyboard){
if (event.keyCode == KeyCode.KEY_W){
this.b1 = 0
}
}
update(deltaTime: number) {
let u1 = quat() //四元数
let u2 = v3()
let j1 = find('s1')
this.node.lookAt(j1.position,Vec3.UP)
let rad = misc.degreesToRadians(this.z1) //度数转弧度
Vec3.transformQuat(u2, v3(0,0,1), this.node.rotation) //计算向量
Quat.rotateAround(u1, this.node.rotation, u2, rad)
this.node.rotation = u1
let c1 = v3()
let c2 = v3(this.b1,0,0)
Vec3.transformQuat(c1,c2, this.node.rotation)
this.node.getComponent(RigidBody).setLinearVelocity(c1)
}
}