以下是翻译后的内容:
该下面的代码基本上是在玩家对象接触到它时绘制一个弯曲的线条,产生“拉伸”线条的效果。它做了什么 好消息是,它产生了所需的效果。问题是,它必须在玩家对象与它交互时绘制这个假象3次每帧(3次来获得所需的线条厚度)。显然,这会严重影响游戏的FPS。 我在想的是,是否有更好的方法来实现这个效果,或者优化当前的做法我的游戏的FPS被限制在30。调试菜单显示,在绘制弯曲线条时,实际FPS值从~2000降至~200 ///绘制事件 var left_box_border = obj_battlebox.borderL; var right_box_border = obj_battlebox.borderR; var top_box_border = obj_battlebox.borderU-2; var bottom_box_border = obj_battlebox.borderD; var leftright_point1_y = top_box_border; var leftright_point2_y = bottom_box_border; var bomtop_point1_x = left_box_border-3; var bomtop_point2_x = right_box_border+4; var right_stretch_x, right_stretch_y, left_stretch_x, left_stretch_y, top_stretch_x, top_stretch_y, bottom_stretch_x, bottom_stretch_y; //右侧交互 if (obj_heart.x > right_box_border-8){ right_stretch_x = obj_heart.x+18; right_stretch_y = obj_heart.y; right_resistance = true; obj_heart.alarm[1] = 1; }else{ obj_heart.x = lerp(obj_heart.x,right_box_border-16,0.125); }else{ right_stretch_x = right_box_border; right_stretch_y = (leftright_point1_y + leftright_point2_y)/2; right_resistance = false; } var V1 = 0.000625; var V2 = 0.00125; if (right_resistance){ //绘制右侧弯曲线条 for (var pr = 0; pr <= 1; pr += V1){ var new_pr, qx1, qy1, qx2, qy2, qx, qy, qxx, qyy; qx1 = (right_stretch_x - right_box_border) * pr+right_box_border; qy1 = (right_stretch_y - leftright_point1_y) * pr+leftright_point1_y; qx2 = (right_box_border - right_stretch_x) * pr+right_stretch_x; qy2 = (leftright_point2_y - right_stretch_y) * pr+right_stretch_y; qx = (qx2-qx1) * pr+qx1; qy = (qy2-qy1) * pr+qy1; if (pr-V2) < 0{ new_pr = 0; }else{ new_pr = pr-V2; } qxx = (qx2-qx1) * (new_pr) + qx1; qyy = (qy2-qy1) * (new_pr) + qy1; draw_line_color(qx,qy,qxx,qyy,right_line_col,right_line_col); draw_line_color(qx+2,qy,qxx,qyy,right_line_col,right_line_col); draw_line_color(qx+4,qy,qxx,qyy,right_line_col,right_line_col); } }else{ if (obj_battlebox.current_width == global.border_w){ draw_sprite_ext(spr_pixel_c,0,right_box_border+3,320,1,obj_battlebox.current_height/3.6,0,c_lime,1); } }
评论 (0)