0

我有一个带有自己库存的对象,为此我使用了一张地图列表。每个项目都有一个名称和 x 和 y 偏移量。

我想在我的另一个对象上绘制每个项目的偏移量,并让它们与原始对象一起转动,所以在绘图函数中我有这个:

draw_sprite_ext(spr_cart2, 0, x, y,1,1,direction, c_white, 1)
for(i = 0; i < ds_list_size(products); i++){
    product = products[| i]
    rad_dir = degtorad(direction)
    x_rot = cos(rad_dir)*(product[? "x"]-x) - sin(rad_dir)*(product[? "y"]-y)
    y_rot = cos(rad_dir)*(product[? "y"]-y) - sin(rad_dir)*(product[? "x"]-x)
    draw_sprite_ext(asset_get_index("spr_"+product[? "product"]), 0, x_rot, y_rot, 1, 1, direction, c_white, 1)
}

但是,它根本不起作用。我尝试记录产品[?"x"]-x,它给出了一个非常大的负数,而只记录 product[? "x"] 确实给出了预期的结果。

4

1 回答 1

0

最终起作用的不是直接从地图中减去旋转逻辑也有一些错误。
工作代码:

draw_sprite_ext(spr_cart2, 0, x, y,1,1,direction, c_white, 1)
for(i = 0; i < ds_list_size(products); i++){
    product = products[| i]
    x_rot = (cos(rad_dir)*(product[? "x"])) - (sin(rad_dir)*(product[? "y"]))
    y_rot = (cos(rad_dir)*(product[? "y"])) + (sin(rad_dir)*(product[? "x"]))
    draw_sprite_ext(asset_get_index("spr_"+product[? "product"]), 0, x-x_rot, y+y_rot, 0.5, 0.5, direction, c_white, 1)
}
于 2018-03-16T20:18:42.437 回答