我最近开始涉足游戏开发的编程方面,试图实现我的游戏梦想(并且在屏幕前一小时不眠不休的工作中感觉到一些生产力),但我真的很难以编程一些基本事项。

我的当前困境是让敌人的移动。 我已经花了过去两天时间观看YouTube视频和阅读手册。 好消息是,我越读越看,语言理解越好。 坏消息是,经过零睡眠和近20小时观看视频和试错后,我肯定缺乏一些基本知识来理解我哪里出错了。

目前正在构建一个平台游戏。 我试图编程一个简单的生物,它会沿着“地板”移动的范围开始跟随玩家对象在视觉范围内。 当我运行我的程序时,我的敌人对象会停留在原地,直到它与我的玩家对象碰撞,然后它会崩溃(我几乎肯定是因为我还没有完成编写敌人和玩家对象的战斗代码)但在我之前尝试修复这个混乱之前,敌人会开始向右移动,远离我的玩家对象,当碰撞发生时,我会跳出被困住的状态。

任何建议、资源和理解我逻辑中哪里出错的帮助都将非常感激。

CREATE

target_x = x;

target_y = y;

xspd = 0;

yspd = 0;

move_speed = 1;

move_direction = 0;

sight = 300;

//跳跃变量

grav = 0.25;

tilemap = layer_tilemap_get_id("tile_col");

//击退

kb_x = 0;

kb_y = 0;

alarm[0] = 120;

STEP

//视野

if (collision_line(x, y, x + sight, y, obj_player, false, true))

{

if (collision_line(x, y, obj_player.x, obj_player.y, tilemap, false, true)) foundplayer = false;

else foundplayer = true;

}

else foundplayer = false;

//碰撞

if (foundplayer = true)

{

move_towards_point(obj_player.x, y, move_speed * 2)

}

//碰撞检测

if place_meeting(x + xspd, y, tilemap)

{

var _pixelcheck = sign(xspd);

while !place_meeting(x + _pixelcheck, y, tilemap)

{

x += _pixelcheck;

}

xspd = 0;

}

if place_meeting(x + xspd, y + yspd, tilemap)

{

var _pixelcheck = sign(yspd);

while !place_meeting(x + xspd, y + _pixelcheck, tilemap)

{

y += _pixelcheck;

}

yspd = 0;

}

//移动

if (alarm[1] >= 0)

{

target_x = x + kb_x;

}

xspd = clamp(target_x - x, -1, 1);

move_and_collide(xspd * move_speed, y, [tilemap, obj_enemy_parent]);

ALARM [0]

if (instance_exists(obj_player) and distance_to_object(obj_player) < distance_to_player)

{

target_x = obj_player.x;

target_y = y;

}

else {

target\_x = random\_range(xstart - 200, xstart + 200);

target_y = y;

}

alarm[0] = 120

ALARM [1]

if (hp <= 0)

{

instance_destroy();

}

*注: *

我还没有完全编程出大部分内容,因为我一直在努力让它移动的方式,所以除非它是导致这个对象出错的原因之一,不要在意它(除非你有任何建议来重新设计:)