发新话题
打印

[基础] 键盘控制人物行走的另个做法

键盘控制人物行走的另个做法

如题,也希望贴贴您做法,大家可以相互学习
复制内容到剪贴板
代码:
var mclsA:Object = new Object();
var sp = 3;
mclsA.onKeyDown = function() {
        if (Key.isDown(Key.LEFT)) {
                mc.gotoAndStop(2);
                mc._x = Math.max(0, mc._x-sp);
        } else if (Key.isDown(Key.RIGHT)) {
                mc.gotoAndStop(3);
                mc._x = Math.min(Stage.width-mc._width, mc._x+sp);
        } else if (Key.isDown(Key.DOWN)) {
                mc.gotoAndStop(4);
                mc._y = Math.min(Stage.height-mc._height, mc._y+sp);
        } else if (Key.isDown(Key.UP)) {
                mc.gotoAndStop(5);
                mc._y = Math.max(0, mc._y-sp);
        }
};
mclsA.onKeyUp = function() {
        for (k=0; k<4; k++) {
                mc["mc"+k].stop();
        }
};
Key.addListener(mclsA);
[ 本帖最后由 kentyeach 于 2008-8-8 11:45 编辑 ]

附件

未命名-1.swf (4.7 KB)

2008-8-5 15:06, 下载次数: 155

TOP

借你的小人用一下

TOP

有Bug哦..

TOP

是有bug哦,刚才看了,问题在
mclsA.onKeyUp = function() {
        for (k=0; k<4; k++) {
                mc["mc"+k].stop();
        }
};
这里mc["mc"+k]是stop的了,如果继续按当前,仍是stop,该怎么初始它呢?

TOP

向左走的小人有点问题~腿没动起来呀

TOP

这是源文件

附件

游戏人物移动.fla (38 KB)

2008-8-11 13:53, 下载次数: 67

TOP

感谢分享先学习了
个人设计作品展示论坛:http://totatis2008.5d6d.com/bbs.php
欢迎交流和合作

TOP

人物行走不灵

TOP

网上有很多这类教程。
就因为太多了,谁都想做,结果导致精华少,糟粕多。
很多bug也是没有细致制作引起的-_-

本人感觉有必要写个规范写的fla出来

下面附件美工是feimouse找到的
脚本由本人自己提供
含源。
复制内容到剪贴板
代码:
下面仅为核心脚本。详细脚本可下载fla到本地。
player.stop();
player._x = 100;
player._y = 250;
var use_bomb = 2;
//当前手雷数量,此数字决定一次最多能连续扔多少手雷
var g:Number = 2;
//模拟重力
var isJumping:Boolean = false;
var tmp:Boolean = false;
var yplus:Number = 0;
var xplus:Number = 1;
_root.w = 87;
_root.u = 85;
_root.i = 73;
_root.a = 65;
_root.s = 83;
_root.d = 68;
var ammoi:Number = 1;
var bombi:Number = 1;
onEnterFrame = function () {
        //预先设定tmp是“没有按下键”
        if (Key.isDown(_root.w)) {
                if (_root.isJumping == false) {
                        player.gotoAndStop("上看");
                } else {
                        player.gotoAndStop("跳上");
                }
        } else if (Key.isDown(_root.s)) {
                if (_root.isJumping == false) {
                        player.gotoAndStop("蹲");
                } else {
                        player.gotoAndStop("跳下");
                }
        } else if (Key.isDown(_root.a)) {
                if (_root.isJumping == false) {
                        player.gotoAndStop("跑");
                }
                _root.player._x -= 7;
                _root.player._xscale = 100;
        } else if (Key.isDown(_root.d)) {
                if (_root.isJumping == false) {
                        player.gotoAndStop("跑");
                }
                _root.player._x += 7;
                _root.player._xscale = -100;
        }
        if (Key.isDown(_root.u)) {
                player.ss_mc.gotoAndPlay("st");
        }
        if (Key.isDown(_root.i)) {
                player.ss_mc.gotoAndPlay("tr");
        }
        if (Key.isDown(Key.SPACE)) {
                if (_root.isJumping == false) {
                        player.gotoAndStop("跳");
                        _root.isJumping = true;
                        _root.yspeed = -26;
                        _root.player.onEnterFrame = function() {
                                _root.yspeed += _root.g;
                                _root.player._y += _root.yspeed;
                                if (_root.player._y>=245 && _root.yspeed>0) {
                                        _root.player.gotoAndStop("站");
                                        _root.isJumping = false;
                                        _root.player._y = 250;
                                        delete _root.player.onEnterFrame;
                                }
                        };
                }
        }
};
[ 本帖最后由 Cl@rke将军 于 2008-8-11 15:09 编辑 ]

附件

tt1.fla (841.5 KB)

2008-8-11 15:09, 下载次数: 80

tt1.swf (185.09 KB)

2008-8-11 15:09, 下载次数: 375

TOP

控制方法:
wsad控制上下左右,u射击,i投掷
空格跳跃。

因美工部分未找到空中投掷和蹲下投掷的图片,该部分缺省。


[ 本帖最后由 Cl@rke将军 于 2008-8-11 15:09 编辑 ]

TOP

楼上的效果真好
谢谢

TOP

脚本里面这句

//预先设定tmp是“没有按下键”

是测试时候忘了删了。。
该句没实质作用,不用找tmp这个量了。。

TOP

貌似还有个小BUG
跳的时候可以左右跳.问题是跳的同时如果按了W呢?貌似不能控制方向了吧,
还得设置W分别和A / D同时按下时的代码吧?

因为合金弹头里面的人不会有这个BUG

TOP

发新话题