我正在制作一个游戏,它的法术造型基于Noita(指南:魔杖机制 - The Noita ))Wiki)。spellList是一个ds列表,包含魔杖中的法术顺序。wandSize始终为5。当我有大量散布、火球、地雷,顺序为这样时,火球会以大量散布的形式被抛掷,但随后下一次绘制时会再次抛掷大量散布的火球,然后抛掷地雷。它本应只抛掷一个大量散布的火球,然后一个地雷。
所有这些代码都在Player对象中。这段代码在步骤事件中。
//添加左键鼠标点击时的绘制
if(mouse_check_button_pressed(mb_left)){
draw+=1
}
reset_mods() //这是法术发生的地方
//如果全局spellList[|slot]==
for(i=0; i<global.wandSize; i+=1) {
//检查是否有足够的绘制
if(draw<1){
break
}
//设置要读取的槽位
slot=(slot+1)
if(slot != slot mod global.wandSize) {
slot= slot mod global.wandSize
if(loop==1) {
looped=1
}
}
//检查大量散布修饰
if(global.spellList[|slot]=="Heavy_Spread") {
mods.heavy_spread+=1
projectiles+=4
i=0
loop=1
}
//检查火球法术
if(global.spellList[|slot]==Fireball) {
casted=Fireball
cast()
}
//检查地雷法术(不是地形破坏)
if(global.spellList[|slot]==Mine) {
casted=Mine
cast()
}
}
draw=0
cast() 和 reset_mods() 已经在创建代码中定义。
function cast(){
repeat(projectiles){
instance_create_layer(x, y, layer, casted, mods)
}
draw-=1
projectiles=1
reset_mods()
if(looped==1){
slot=0
looped=0
}
}
function reset_mods(){
mods={ heavy_spread:0 }
}
评论 (0)