我最近开始涉足游戏开发的编程方面,试图实现我的游戏梦想(并且在屏幕前一小时不眠不休的工作中感觉到一些生产力),但我真的很难以编程一些基本事项。
我的当前困境是让敌人的移动。 我已经花了过去两天时间观看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();
}
*注: *
我还没有完全编程出大部分内容,因为我一直在努力让它移动的方式,所以除非它是导致这个对象出错的原因之一,不要在意它(除非你有任何建议来重新设计:)
评论 (0)