小白求助:实现人物移动

  • 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

谢谢谢谢 :smiling_face_with_three_hearts:

https://docs.cocos.com/creator/manual/zh/getting-started/first-game/
官方示例有的,新手第一个游戏