import { _decorator, Component, EventKeyboard, EventMouse, Input, input, Node, v2, v3 } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('pc2')
export class pc2 extends Component {
fe1:number = 0
fe2:number = 0
hu3:boolean = false
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.fe1 = this.node.eulerAngles.x
this.fe2 = this.node.eulerAngles.y
//鼠标在UI坐标系下的移动距离
let x1 = event.movementX
let y1 = event.movementY
//用欧拉角设置世界坐标系下的旋转
this.node.setWorldRotationFromEuler(this.fe1+=y1*-1,this.fe2+=x1*-1,0)
}
}
onKeyDown(event:EventKeyboard){
this.hu3 = true
}
onKeyUp(event:EventKeyboard){
this.hu3 = false
}
update(deltaTime: number) {
//旋转角度转化为弧度
let ag = this.node.eulerAngles.y * 2/360 * Math.PI
//计算基于z轴的方向向量
let j = v3( Math.sin(ag), 0, Math.cos(ag) )
//方向向量进行单位化
j.normalize()
//根据方向向量移动位置
let h1 = this.node.position.x
let h2 = this.node.position.y
let h3 = this.node.position.z
if(this.hu3){
this.node.setPosition( h1 += deltaTime * j.x * 5 * -1, h2 += deltaTime * j.y * 5 * -1, h3 += deltaTime * j.z * 5 * -1 )
}
}
}