0
當我嘗試爲我的所有目標使用ds列表時,出現我的代碼問題。它似乎不會註冊一個東西,我不知道我做錯了什麼,我已經嘗試了我所知道的一切。當我顯示ds列表的值時,它始終爲0,即使我列入列表的衝突ID也有值。碰撞標識默認值爲-4,因爲某些原因它不與任何東西碰撞。ds_list在遊戲製作工作室中工作不正常
這是將值分配給ds列表的代碼。
//get all enemys in area
current_coli = collision_circle(x, y, tower_range, obj_enemys, 0, 1);
if (current_coli != noone){
ds_list_add(collision_list, current_coli);
}
這裏是我試圖在巫婆什麼都不用的ds列表中的代碼。
var i
for (i = 0; i < ds_list_size(collision_list) + 1; i++){
target_test = ds_list_find_value(collision_list, i);
if (instance_exists(target_test) and (rectangle_in_circle(target_test.x - 7, target_test.y - 7, target_test.x + 7, target_test.y + 7, x, y, tower_range) > 0))
{
target = ds_list_find_value(collision_list, i);
target.show_hp_bar = true;
target.path_speed = target.path_speed * ((100 - slow)/100)
show_debug_message(other.target);
}else{
target.path_speed = target.start_speed;
ds_list_delete(collision_list, i);
}
}
由於ds列表中不包含任何內容,我無法執行該代碼。正如我之前所說的,「current_coli」給出了對象的id,但由於某種原因它不會將它存儲到ds列表中,「target_test」總是未識別的,ds列表「collision_list」始終是0.代碼是在對象階躍事件中,在地圖上有一個固定位置,並將該效果應用於碰撞半徑內的敵方物體。
感謝您的迴應! 我明白,我正在考慮用obj {}做,但我認爲這沒有任何區別。我也認爲把它放在for循環中可能是錯誤的,但我沒有太多的for循環經驗,所以我不知道。 無論如何感謝您的幫助生病立即嘗試它! –
好了,現在可以使用了,但現在又出現了另一個問題,for循環顯着減慢了遊戲速度,它非常明顯,所以你有沒有其他的想法可能不會在CPU上造成如此沉重的負擔? –
nvm解決了這個問題,這是因爲它增加了相同的物體時刻,使得for循環變得越來越大,只要有些東西在半徑內。 –