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

Project1

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

[有事请教] RMMV玩家移动速度调成小数后产生BUG

[复制链接]

Lv2.观梦者

梦石
0
星屑
884
在线时间
99 小时
注册时间
2016-11-26
帖子
13
跳转到指定楼层
1
发表于 2018-7-9 23:53:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x

觉得系统默认的玩家移动速度4太慢、5又太快,用脚本this._moveSpeed =4.5改了移动速度,但是会出现一个情况——在玩家移动过程中,其他所有NPC的图像会不断有1像素的偏移闪烁、玩家停止移动会复原,但如果是在无限循环的地图里偏移后甚至不会复原,有没大神知道这是什么情况的?

Lv3.寻梦者

梦石
0
星屑
3730
在线时间
1176 小时
注册时间
2016-8-9
帖子
2395

开拓者

2
发表于 2018-7-10 14:01:53 | 只看该作者
是不是因为不是偶数的原因呢?改成4.4或者4.6如何?

ps:我纯属瞎猜支招喔
酸酸甜甜就④哇噢
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
884
在线时间
99 小时
注册时间
2016-11-26
帖子
13
3
 楼主| 发表于 2018-7-10 17:04:42 | 只看该作者
白嫩白嫩的 发表于 2018-7-10 14:01
是不是因为不是偶数的原因呢?改成4.4或者4.6如何?

ps:我纯属瞎猜支招喔

试过一样,整数就没问题,小数就不行。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4858
在线时间
427 小时
注册时间
2017-9-27
帖子
76
4
发表于 2018-7-11 09:03:43 | 只看该作者
用像素移动吧,不过效果一样不太好。。
https://twitter.com/rev2nym
http://rev2nym.blog.fc2.com/
https://drive.google.com/drive/f ... eCWsUGdZbE9kOGphMWs
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
884
在线时间
99 小时
注册时间
2016-11-26
帖子
13
5
 楼主| 发表于 2018-7-11 10:41:24 | 只看该作者
丶此生为伊人 发表于 2018-7-11 09:03
用像素移动吧,不过效果一样不太好。。
https://twitter.com/rev2nym
http://rev2nym.blog.fc2.com/

像素移动就算了,容易卡墙。

点评

基本无解,你改移速,移动起来,周围的东西认真看也有卡顿现象  发表于 2018-7-11 17:56
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
566
在线时间
46 小时
注册时间
2017-10-23
帖子
14
6
发表于 2018-7-12 16:29:08 | 只看该作者
RM移动速度是倍数形式的
每格的像素是48
移速4 那就是2^4/256*48=3 每帧移动3像素 16帧移动完48像素
移速5 那就是2^5/256*48=6 每帧移动6像素   8帧移动完48像素

移速4.415那就是2^4.415/256*48≈4 每帧移动4像素   12帧移动完48像素
当然你打的小数越长越精准4.415003749927884

除了整数和特定小数外,不能在整数帧内移动完就会出现BUG


并且更改 this._moveSpeed 会对角色和事件同时生效,所有NPC的默认移速也变成了你设置的4.5
只更改角色需要在Game_Player.initMembers 里面新增一行this._moveSpeed

点评

话说这个除256是什么情况啊  发表于 2018-7-12 23:54

评分

参与人数 1+1 收起 理由
白嫩白嫩的 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
884
在线时间
99 小时
注册时间
2016-11-26
帖子
13
7
 楼主| 发表于 2018-7-12 23:20:17 | 只看该作者
celica 发表于 2018-7-12 16:29
RM移动速度是倍数形式的
每格的像素是48
移速4 那就是2^4/256*48=3 每帧移动3像素 16帧移动完48像素

十分感谢,不过我测试了下这个小数结果还是一样会闪烁,在无限循环的地图依旧会偏移。
Game_Player.prototype.initMembers = function() {
    Game_Character.prototype.initMembers.call(this);
    this._vehicleType = 'walk';
    this._vehicleGettingOn = false;
    this._vehicleGettingOff = false;
    this._dashing = false;
    this._needsMapReload = false;
    this._transferring = false;
    this._newMapId = 0;
    this._newX = 0;
    this._newY = 0;
    this._newDirection = 0;
    this._fadeType = 0;
    this._followers = new Game_Followers();
    this._encounterCount = 0;
    this._moveSpeed = 4.415003749927884;
};
应该是这样插入的吧~
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
566
在线时间
46 小时
注册时间
2017-10-23
帖子
14
8
发表于 2018-7-14 01:15:56 | 只看该作者
yurejian 发表于 2018-7-12 23:20
十分感谢,不过我测试了下这个小数结果还是一样会闪烁,在无限循环的地图依旧会偏移。
Game_Player.proto ...

因为是小数 所以移动时 总会变成x.000001或者x.9999999 造成没有在刚好的帧数内移动到位置
下面的函数是将接近的数,直接变为整数。如果你有更好的写法可以用别的

在Game_CharacterBase.updateMove最后一个判断之前加上以下内容

  1.         if (Math.abs(Math.round(this._realX) - this._realX) < 0.001) {this._realX = Math.round(this._realX);}
  2.         if (Math.abs(Math.round(this._realY) - this._realY) < 0.001) {this._realY = Math.round(this._realY);}
复制代码

我已测试没问题
还有偏移需要更改Game_Map,但由于小数位很长 凭人类是无法做到偏移达到一个像素的


回复之前的点评/256 是RM默认的写法 为的是倍数1 2 4 8 16 刚好让每个移动速度是之前的2倍,方便计算
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3077
在线时间
337 小时
注册时间
2018-3-28
帖子
203
9
发表于 2018-7-14 12:33:46 | 只看该作者
bilibi上 看了一期神仙狼的视频 里面有关于这个移动速度的调整视频 附上一点自己修改的地方  提供参考

object文件里

Game_CharacterBase.prototype.distancePerFrame = function() {
    if ($gameVariables.value(12) >= 0) {
        return Math.pow(2, this.realMoveSpeed()) / ($gameVariables.value(11)+ 56);     
    }
    else
        return Math.pow(2, this.realMoveSpeed()) / ($gameVariables.value(11)+ 312)
};
用mv做了两款游戏,有兴趣的可以瞧一瞧:
《有毛病》--- 休闲、探索、策略、剧情、恐怖 都有那么一些,就是没有战斗。挺骚挺有意思的一个游戏。
steam链接:点击这里


《留离》--- 探索、高自由度、ARPG、战斗,就是没有啥剧情。
steam链接:点击这里
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 01:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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