设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2754|回复: 9
打印 上一主题 下一主题

[已经过期] 请教大神,我这段代码绘制出的图形怎么让他在人物之下...

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
95 小时
注册时间
2017-4-26
帖子
45
跳转到指定楼层
1
发表于 2017-5-3 16:56:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
var MyBitmapAlias = Spriteset_Map.prototype.createTilemap;
Spriteset_Map.prototype.createTilemap = function() {
        if ($gameMap.mapId() == tankPos[0][2]){
        this.sprite = new Sprite();
        this.sprite.bitmap = ImageManager.loadCharacter('$Tank01');
        this.sprite.setFrame(32, 32, 32, 32);
        this.addChild(this.sprite);
        // get player's coordinate
        this.sprite.x = $gamePlayer.screenX() - ($gamePlayer.x - tankPos[0][0]) * 48 - 18;
        this.sprite.y = $gamePlayer.screenY() - ($gamePlayer.y - tankPos[0][1]) * 48 + 12;
        this.sprite.z = 2;
        }
    MyBitmapAlias.call(this);
};

如何控制sprite的图像的层级,多谢!

Lv3.寻梦者

梦石
0
星屑
3559
在线时间
2337 小时
注册时间
2015-8-25
帖子
960

开拓者

2
发表于 2017-5-3 17:27:11 手机端发表。 | 只看该作者
不太懂mv
不能获取人物精灵的z之后减一么?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4583
在线时间
1205 小时
注册时间
2016-4-7
帖子
982

开拓者

3
发表于 2017-5-3 17:32:46 | 只看该作者
本帖最后由 shitake 于 2017-5-3 17:57 编辑

由于MV的sprite没有z轴的设定,显示层级在于他们addchild时的先后顺序。
想要修改显示层级,则需要修改addchild的顺序。或者直接获取scene的children数组,然后修改。


@七重
并不能说是老式。。。只不过是实现的方式不同罢了。其实MV 没有z轴的原因是RMMV的渲染底层 pixi.js 没有z轴设定。不过目前有加z轴的意向。
具体可以参考这个issue: https://github.com/rpgtkoolmv/corescript/issues/4

点评

https://github.com/rpgtkoolmv/corescript/blob/master/js/rpg_core/Sprite.js 告诉我sprite哪里有z轴了?  发表于 2017-5-3 20:42
(゚Д゚≡゚Д゚),我用的里面明明有z,我是穿越了么……  发表于 2017-5-3 19:36

评分

参与人数 1星屑 +30 收起 理由
七重 + 30 原来如此,作为引擎意外地很老式。。?.

查看全部评分

附庸的附庸不是我的附庸,女儿的女儿还是我的女儿。CK2沉迷ing
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
95 小时
注册时间
2017-4-26
帖子
45
4
 楼主| 发表于 2017-5-3 17:36:48 | 只看该作者
shitake 发表于 2017-5-3 17:32
由于MV的sprite没有z轴的设定,显示层级在于他们addchild时的先后顺序。
想要修改显示层级,则需要修改addc ...

多谢大神指点
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
2
星屑
5520
在线时间
2564 小时
注册时间
2012-2-9
帖子
990

开拓者

5
发表于 2017-5-3 19:34:20 | 只看该作者
本帖最后由 garfeng 于 2017-5-3 22:10 编辑



绘制的怪物在人物下方。

只改了一句:this._tilemap.addChild(this.sprite);

在同一个Texture/Container(容器)里的Sprite(精灵)可通过z值来设置相互之间的高度,

但如果容器都不一样,先后顺序则取决于容器的z,

你把自己新建的精灵放在Spriteset_Map的里,那么它应该和this._baseSprite/Tilemap来比z,

如果你想仅仅让它的z比character低,那么应该把它放在Tilemap的children里,

因为character是Tilemap的children,它的z值1/3/5,只对Tilemap的children里的其他精灵有效,对Tilemap外的其他容器或精灵无效。

不知道讲清楚了没有。
JAVASCRIPT 代码复制
  1. Spriteset_Map.prototype.createTilemap = function() {
  2.     if (Graphics.isWebGL()) {
  3.         this._tilemap = new ShaderTilemap();
  4.     } else {
  5.         this._tilemap = new Tilemap();
  6.     }
  7.     this._tilemap.tileWidth = $gameMap.tileWidth();
  8.     this._tilemap.tileHeight = $gameMap.tileHeight();
  9.     this._tilemap.setData($gameMap.width(), $gameMap.height(), $gameMap.data());
  10.     this._tilemap.horizontalWrap = $gameMap.isLoopHorizontal();
  11.     this._tilemap.verticalWrap = $gameMap.isLoopVertical();
  12.     this.loadTileset();
  13.     this._baseSprite.addChild(this._tilemap);
  14.  
  15.     this.sprite = new Sprite();
  16.     this.sprite.bitmap = ImageManager.loadCharacter('$BigMonster1');
  17.     this.sprite.setFrame(96, 96, 96, 96);
  18.     this.sprite.x = ($gamePlayer.x ) * 48 - 18;
  19.     this.sprite.y = ($gamePlayer.y ) * 48 + 12;
  20.     this.sprite.z = 2;
  21.  
  22.     this._tilemap.addChild(this.sprite);
  23.         // get player's coordinate
  24.  
  25. };


自己弄alias吧


论如何一本正经的胡说八道



点评

多谢大神!  发表于 2017-5-4 11:06
我选择狗带  发表于 2017-5-3 21:16
无论是rmmv的官方文档还是pixi.js的文档,里面都没有z轴这种东西  发表于 2017-5-3 20:47
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-16 17:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表