-
Creator 版本:
-
目标平台:
-
重现方式:
-
首个报错:
-
之前哪个版本是正常的:
-
手机型号:
-
手机浏览器:
-
编辑器操作系统:
-
重现概率:
0基础建议看下公开课
有在看一些,但是看到课程的编辑器版本好像不太一致,导致在写脚本的时候使用的一些方法报错
其实不管是2d还是3d移动方式都差不多 只是参数不同而已
课程视频多半是2.x的吧?3.x改动还是蛮大的
看看官方的示例项目就可以啦,每个版本都有对应的
import { _decorator, Component, Node, Input, input, EventKeyboard, KeyCode} from 'cc';
const { ccclass, property } = _decorator;
@ccclass('Test')
export class Test extends Component {
// 角色节点(精灵节点)
@property({type: Node})
private player: Node = null;
// 角色是否可移动
private isMoveUp: Boolean;
private isMoveRight: Boolean;
private isMoveDown: Boolean;
private isMoveLeft: Boolean;
// 角色移动数值
private moveValue: number;
/**
* 初始化加载函数
*/
onLoad() {
this.isMoveUp = false;
this.isMoveRight = false;
this.isMoveDown = false;
this.isMoveLeft = false;
this.moveValue = 6; // 移动数值,自己定义
}
/**
* 帧开始函数
*/
start() {
// 监听玩家按下键盘事件
input.on(Input.EventType.KEY_DOWN, this.onKeyDown, this);
input.on(Input.EventType.KEY_UP, this.onKeyUp, this);
}
/**
* 刷新帧函数
* @param deltaTime
*/
update(deltaTime: number) {
// 角色移动
if(this.isMoveUp) {
this.player.setPosition(this.player.position.x, this.player.position.y + this.moveValue);
}else if(this.isMoveDown) {
this.player.setPosition(this.player.position.x, this.player.position.y - this.moveValue);
}
if(this.isMoveLeft) {
this.player.setPosition(this.player.position.x - this.moveValue, this.player.position.y);
}else if(this.isMoveRight) {
this.player.setPosition(this.player.position.x + this.moveValue, this.player.position.y);
}
}
/**
* 监听键盘按下
* @param event
*/
onKeyDown(event: EventKeyboard) {
if(event.keyCode == KeyCode.KEY_W) {
this.isMoveUp = true;
}else if(event.keyCode == KeyCode.KEY_S) {
this.isMoveDown = true;
}
if(event.keyCode == KeyCode.KEY_A) {
this.isMoveLeft = true;
}else if(event.keyCode == KeyCode.KEY_D) {
this.isMoveRight = true;
}
}
/**
* 监听键盘松开
* @param event
*/
onKeyUp(event: EventKeyboard) {
if(event.keyCode == KeyCode.KEY_W) {
this.isMoveUp = false;
}else if(event.keyCode == KeyCode.KEY_S) {
this.isMoveDown = false;
}
if(event.keyCode == KeyCode.KEY_A) {
this.isMoveLeft = false;
}else if(event.keyCode == KeyCode.KEY_D) {
this.isMoveRight = false;
}
}
/**
* 销毁时执行
*/
onDestroy() {
input.off(Input.EventType.KEY_DOWN, this.onKeyDown, this);
input.off(Input.EventType.KEY_UP, this.onKeyUp, this);
}
}
版本:3.5.1
我也是最近刚学不久,这个是一套简单的2d角色移动代码,你可以直接放进去然后定义好 player 后就能移动了
按键是 W A S D
谢谢谢谢