gamemaker吧 关注:13,650贴子:95,140
  • 12回复贴,共1
/// 创建
//残影数量
shadow_num = 5;
//初始化残影
for(var _i = 0; _i<shadow_num; _i++)
{
shadow_arr[_i, 0] = x;
shadow_arr[_i, 1] = y;
shadow_arr[_i, 2] = z;
shadow_arr[_i, 3] = image_index;
}
//定时添加
shadow_tim = 5; //残影长度
alarm[0] = shadow_tim;
/// 计时器0
for(var _i=shadow_num-1; _i>0; _i--)
{
shadow_arr[_i, 0] = shadow_arr[_i-1, 0];
shadow_arr[_i, 1] = shadow_arr[_i-1, 1];
shadow_arr[_i, 2] = shadow_arr[_i-1, 2];
shadow_arr[_i, 3] = shadow_arr[_i-1, 3];
}
shadow_arr[0, 0] = x;
shadow_arr[0, 1] = y;
shadow_arr[0, 2] = z;
shadow_arr[0, 3] = image_index;
//重启定时器
alarm[0] = shadow_tim;
/// 绘制
scr_draw_shadow(shadow_num, shadow_arr);
/// 脚本
function scr_draw_shadow(){
for(var _i=0; _i<argument0; _i++)
{
draw_sprite_ext(sprite_index, image_number, argument1[_i,0], argument1[_i,1] + argument1[_i,2], image_xscale * argument1[_i, 3], image_yscale, image_angle, image_blend, 0.7 -_i / argument0);
}
}
初始的残影,其他的自信调整


IP属地:宁夏1楼2024-12-29 18:03回复
    GMS 2.3之后的版本


    IP属地:宁夏2楼2024-12-29 18:05
    回复


      IP属地:宁夏3楼2024-12-29 18:06
      回复

        嗯,读了一遍,是上图的下面这种,不过似乎有些区别。0.7 -_i / argument0(脚本里draw函数的alpha部分)决定了这里残影的透明是阶梯式变化的,咱感觉这里连续变化的观感更理想。另外如果是教学的话,咱是建议把相当于常量的东西都放到创建事件里定义,比如
        shadow_tim = 5; //残影长度


        IP属地:北京4楼2024-12-31 17:00
        收起回复