本帖最后由 Drill_up 于 2020-3-18 12:17 编辑
(´⊙ω⊙`) 镜头bug是我的代码造成的问题,我给你代码的时候,提供了分段的思路,
但是我没有注意到分段的pixel_speed在进入分段时判断的值不一样,因为round了。也就出现了镜头墙的bug。
你其实不需要绕路那么多,我原先那段代码的三行换一下位置就可以了,你可以试试看。
速度变低之后,镜头一定要收敛,且镜头收敛之后一定静止,只要确保这一点,镜头墙、看向镜头位置就都不会出问题。
===================================================================================
测试了一下,发现第一次收敛还是比较重要的,第一次收敛是为了防止1像素的突出,第二次收敛是为了避免镜头bug。
if (y2 > this.centerY()){ var distance = Math.abs(y2 - this.centerY()); var pixel_distance = distance * $gameMap.tileHeight() ; //像素距离 var pixel_speed = Math.min(pixel_distance/speedRatio_y,$gameSystem._drill_LCa_speedMax); //像素速度 if( pixel_speed < 0.25 ){ pixel_speed = 0.25; } //像素最小速度(1/4像素) if( pixel_distance < pixel_speed ){ //第一次收敛(最小收敛间距) $gameTemp._drill_LCa_pixel_fix_y = 0; //(镜头停止移动后,所有像素必须吻合归位) $gameMap.scrollDown( distance ); // }else{ pixel_speed += $gameTemp._drill_LCa_pixel_fix_y; //速度小数位补正 $gameTemp._drill_LCa_pixel_fix_y = pixel_speed - Math.round(pixel_speed); //补正值 pixel_speed = Math.round(pixel_speed); //设置速度为固定像素速度 if( pixel_distance < pixel_speed ){ //第二次收敛(round镜头墙bug) $gameTemp._drill_LCa_pixel_fix_y = 0; // $gameMap.scrollDown( distance ); // }else{ $gameMap.scrollDown( pixel_speed/$gameMap.tileHeight() ); } } }
if (y2 > this.centerY()){
var distance = Math.abs(y2 - this.centerY());
var pixel_distance = distance * $gameMap.tileHeight() ; //像素距离
var pixel_speed = Math.min(pixel_distance/speedRatio_y,$gameSystem._drill_LCa_speedMax); //像素速度
if( pixel_speed < 0.25 ){ pixel_speed = 0.25; } //像素最小速度(1/4像素)
if( pixel_distance < pixel_speed ){ //第一次收敛(最小收敛间距)
$gameTemp._drill_LCa_pixel_fix_y = 0; //(镜头停止移动后,所有像素必须吻合归位)
$gameMap.scrollDown( distance ); //
}else{
pixel_speed += $gameTemp._drill_LCa_pixel_fix_y; //速度小数位补正
$gameTemp._drill_LCa_pixel_fix_y = pixel_speed - Math.round(pixel_speed); //补正值
pixel_speed = Math.round(pixel_speed); //设置速度为固定像素速度
if( pixel_distance < pixel_speed ){ //第二次收敛(round镜头墙bug)
$gameTemp._drill_LCa_pixel_fix_y = 0; //
$gameMap.scrollDown( distance ); //
}else{
$gameMap.scrollDown( pixel_speed/$gameMap.tileHeight() );
}
}
}
另外,脚本我也贴出来了,你如果可以,麻烦测测会不会有其他bug。 |