3.4.2版本 用键盘控制移动的问题

已经能够获取到键盘事件了。但是怎么赋予对应的移动呢? 应该放在update(dt:number)里吗?
网上看的教程都是2 3年前的了QAQ
import { _decorator, Component, input, Input, EventKeyboard, KeyCode, Vec3, RigidBody, TERRAIN_MAX_LEVELS, SphereCollider, macro } from ‘cc’;

const { ccclass } = _decorator;

@ccclass(“Example”)

export class Example extends Component {

onLoad () {

    input.on(Input.EventType.KEY_DOWN, this.onKeyDown, this);

    input.on(Input.EventType.KEY_UP, this.onKeyUp, this);

}

onDestroy () {

    input.off(Input.EventType.KEY_DOWN, this.onKeyDown, this);

    input.off(Input.EventType.KEY_UP, this.onKeyUp, this);

}

onKeyDown (event: EventKeyboard) {

    switch(event.keyCode) {

            case KeyCode.KEY_A:

            console.log('向左');

            break;

            case KeyCode.KEY_D:

            console.log('向右');

            break;

            case KeyCode.KEY_W:

            console.log('向前');

            break;

            case KeyCode.KEY_S:

            console.log('向后');

            break;

    }

}

onKeyUp (event: EventKeyboard) {

    switch(event.keyCode) {

            case KeyCode.KEY_A:

            console.log('Release a key');

            break;

            case KeyCode.KEY_D:

            console.log('Release a key');

            break;

            case KeyCode.KEY_W:

            console.log('Release a key');

            break;

            case KeyCode.KEY_S:

            console.log('Release a key');

            break;

    }

}

update(dt:number){

   

}

}

import { _decorator, Component, input, Input, EventKeyboard, KeyCode, Vec3, RigidBody, TERRAIN_MAX_LEVELS, SphereCollider, macro } from ‘cc’;

const { ccclass } = _decorator;

@ccclass(“Example”)

export class Example extends Component {

isleft: boolean;

isright: boolean;

isup: boolean;

isdown: boolean;



onLoad () {

    this.isleft=false;

    this.isright=false;

    this.isup=false;

    this.isdown=false;

   

    input.on(Input.EventType.KEY_DOWN, this.onKeyDown, this);

    input.on(Input.EventType.KEY_UP, this.onKeyUp, this);

}



onDestroy () {

    input.off(Input.EventType.KEY_DOWN, this.onKeyDown, this);

    input.off(Input.EventType.KEY_UP, this.onKeyUp, this);

}

onKeyDown (event: EventKeyboard) {

    switch(event.keyCode) {

            case KeyCode.KEY_A:

            console.log('向左');

            this.isleft=true;

            break;

            case KeyCode.KEY_D:

            console.log('向右');

            this.isright=true;

            break;

            case KeyCode.KEY_W:

            console.log('向前');

            this.isup=true;

            break;

            case KeyCode.KEY_S:

            console.log('向后');

            this.isdown=true;

            break;

    }

}

onKeyUp (event: EventKeyboard) {

    switch(event.keyCode) {

            case KeyCode.KEY_A:

            console.log('Release a key');

            this.isleft=false;

            break;

            case KeyCode.KEY_D:

            console.log('Release a key');

            this.isright=false;

            break;

            case KeyCode.KEY_W:

            this.isup=false;

            console.log('Release a key');

            break;

            case KeyCode.KEY_S:

            this.isdown=false;

            console.log('Release a key');

            break;

    }

}

update(dt:number){

    let speed =5;

    let lv = new Vec3(0,0,0);

    let rb = this.node.getComponent(RigidBody);

    if(this.isleft){

        lv.x = -speed;

        lv.z = 0;

    } else if (this.isright){

        lv.x = speed;

        lv.z = 0;

    } else if (this.isup){

        lv.z = -speed;

        lv.x = 0;

    } else if (this.isdown){

        lv.z = speed;

        lv.x = 0;

    }

    rb?.setLinearVelocity(lv);

   

}

}

笨逼终于有了一点点进步了!!!!!

    Vec3.transformQuat(lv,lv,this.node.getRotation());//可以改为向前走的
    rb?.setLinearVelocity(lv);