import { _decorator, Component, Vec3, input, Input, KeyCode, EventKeyboard } from ‘cc’;
const { ccclass, property } = _decorator;
@ccclass(‘PlayerController’)
export class PlayerController extends Component {
@property({ type: Component }) // 通过属性面板传入 player 对象
player: Component | null = null;
private direction: number = 1; // 移动方向:1 表示向前,-1 表示向后
private moveSpeed: number = 10; // 移动速度:每秒 10 像素
start() {
console.log("PlayerController 脚本已加载");
// 监听键盘按下事件
input.on(Input.EventType.KEY_DOWN, this.onKeyDown, this);
}
update(deltaTime: number) {
if (!this.player) {
console.error("Player 未设置");
return;
}
// 计算移动距离
const moveDistance = this.direction * this.moveSpeed * deltaTime;
// 计算新位置
let newPos = this.player.node.position.add(new Vec3(moveDistance, 0, 0));
// 更新位置
this.player.node.setPosition(newPos);
}
onKeyDown(event: EventKeyboard) {
if (event.keyCode === KeyCode.SPACE) { // 假设按下空格键
console.log("按下按钮,改变移动方向");
// 改变移动方向
this.direction *= -1;
}
}
onDestroy() {
// 取消键盘事件监听
input.off(Input.EventType.KEY_DOWN, this.onKeyDown, this);
}
}
就是简单的每秒朝前移动10像素,但是就是不会动,脚本都挂载好了,项目是新建的,没有多余的东西,就是在canvas下创建一个单色精灵,然后把脚本挂载上去,player设置成那个单色精灵,但是就不是不会动,有知道哪里出问题的吗
