萌新请求,喵喵喵!

k_wallpaper:vq63zyyfimport { _decorator, Component, EventKeyboard, input, KeyCode, Input, Node, RigidBody, Vec3 } from ‘cc’;
const { ccclass, property } = _decorator;

@ccclass(‘player’)
export class player extends Component {
@property(Vec3)
direction: Vec3 = new Vec3(0, 0, 0);

@property(Node)
player:Node;
public speed:number = 20;

onLoad() {

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

}
start() {
    this._init();

}
private _init(){
    this.node.setPosition(0,0);
}

onDestroy() {
    input.off(Input.EventType.KEY_DOWN, this.onKeyDown, this);
    input.off(Input.EventType.KEY_UP, this.onKeyUp, this);

}

update(deltaTime: number) {
    this.private_moveleft(deltaTime);
    this.private_moveright(deltaTime);
    
}

private_moveleft(deltaTime:number){
  this.node.setPosition(this.node.position.x - this.speed * deltaTime,this.node.position.y);  
        
}
private_moveright(deltaTime:number){
  this.node.setPosition(this.node.position.x + this.speed * deltaTime,this.node.position.y); 
        
}

onKeyDown(event: EventKeyboard) {
    if (event.keyCode == KeyCode.KEY_A) {
        this.node.getPosition();
        console.log('Key_Down A');
    } else if (event.keyCode == KeyCode.KEY_D) {
        this.node.getPosition();
        console.log('Key_Down D');
    }

}

onKeyUp(event: EventKeyboard) {
    if (event.keyCode == KeyCode.KEY_A) {
        this.node.getPosition();
        console.log('Key_Up A');
    } else if (event.keyCode == KeyCode.KEY_D) {
        this.node.getPosition();
        console.log('Key_Up D');
    }
}

}
各位帅气的小哥哥,我想让这个player脚本通过A/D来控制它左右移动。按a一下,它就往左边移动一下,按d就往右移动一下。可是在我的cocos3.8.1上预览的时候没效果,什么都没动。
请求解惑一下。蟹蟹咯!

你这按下A或者D的时候只是调用的this.node.getPosition(),没有任何意义。可以加个状态判断,改成按下A,在update里只执行private_moveleft,按下D,在update里只执行private_moveright。现在update里同时执行两个,自然不会移动。

你在按键按下时执行的是node.getPosition这个是获取位置,而没有执行你声明的方法_moveleft或_moveright
private _moveleft中间要有空格

如果想要每一帧更新
伪代码
update
node.x+=speed*dt
keydown
a:speed=-1
d:speed=1

好的。我再去试试 :sob: : :9:

好,么么么 :wave: :wave: :wave: :lips: :lips: :lips:

可以在update里写this.node.setPosition(this.node.position.x + this.speed * deltaTime,this.node.position.y); 。按下W的时候把this.speed改成10,按下S的时候this.speed改成-10,KEY_UP松开键盘的时候,this.speed改成0

可以这么干

左移动

// tween(this.node.position).by(0.3,new Vec3(-50,0,0)).start()

右移动
//tween(this.node.position).by(0.3,new Vec3(0,50,0)).start()