请用cocos写人物控制脚本
时间: 2023-09-25 22:15:25 浏览: 40
以下是一个简单的人物控制脚本示例:
```
const {ccclass, property} = cc._decorator;
@ccclass
export default class PlayerController extends cc.Component {
@property(cc.Float)
speed: number = 300;
private _isMoving: boolean = false;
onLoad() {
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
}
onDestroy() {
cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
}
update(dt: number) {
if (this._isMoving) {
const x = this.node.x + this.speed * dt;
this.node.setPosition(x, this.node.y);
}
}
private onKeyDown(event: cc.Event.EventKeyboard) {
switch(event.keyCode) {
case cc.macro.KEY.left:
this._isMoving = true;
break;
}
}
private onKeyUp(event: cc.Event.EventKeyboard) {
switch(event.keyCode) {
case cc.macro.KEY.left:
this._isMoving = false;
break;
}
}
}
```
在这个脚本中,我们定义了一个 `PlayerController` 类,它继承自 `cc.Component`。我们通过 `@property` 装饰器定义了一个 `speed` 属性,用于控制人物移动速度。我们还定义了一个 `_isMoving` 属性,用于记录人物是否正在移动。
在 `onLoad` 方法中,我们注册了键盘事件的监听器。在 `onDestroy` 方法中,我们移除了事件监听器,以免在脚本销毁时出现内存泄漏。
在 `update` 方法中,我们检查 `_isMoving` 属性的值,如果为 `true`,则将人物向右移动一定距离,距离的大小由 `speed` 属性决定。
在 `onKeyDown` 和 `onKeyUp` 方法中,我们检查键盘事件的键码,如果是左箭头键,则将 `_isMoving` 属性的值设置为 `true` 或 `false`。
这是一个非常简单的人物控制脚本示例,可以根据自己的需求进行修改和扩展。