游戏制造商工作室:我打破了我的玩家

时间:2016-12-21 00:37:43

标签: scripting game-maker arrow-keys

我无法让我的代码工作, 我密切关注了一个教程,然后证明了我的工作。 它适用于老师但是当我尝试它时我的播放器卡住了, 它没有动画或移动。 我将代码分成不同的部分,就像教程中的内容一样。

这是主要的一点:

///script_get_input
right_key = keyboard_check(vk_right);
up_key = keyboard_check(vk_up);
left_key = keyboard_check(vk_left)
down_key = keyboard_check(vk_down)
dash_key = keyboard_check_pressed(ord('C'));
attack_key = keyboard_check(ord('X'));

///check for gamepad input
if (gamepad_is_connected(0)) {
    right_key = (gamepad_axis_value( 0, gp_axislh)>= .5);
    left_key = (gamepad_axis_value( 0, gp_axislh)>= -.5);
    up_key = (gamepad_axis_value( 0, gp_axislv)>= -.5);
    down_key = (gamepad_axis_value( 0, gp_axislv)>= .5)

}

并设置控件,同时设置它们的作用:

    ///scr_move_state
scr_get_input();

///get the axis
var xaxis = (right_key - left_key);
var yaxis = (down_key - up_key);

///get direction
dir = point_direction(0, 0, xaxis, yaxis);

///get length
if (xaxis == 0 and yaxis = 0) {
    len = 0;
} else {
     len = spd;
}
///get the hspd and vspd
hspd = lengthdir_x(len, dir);
vspd = lengthdir_y(len, dir);

///move
phy_position_x += hspd;
phy_position_y += vspd;

///control the sprite
image_speed = sign(len)*.2;
if (len == 0) image_index = 0;

///vertical sprites
if (vspd > 0) { 
    sprite_index = spr_player_down;
} else if (vspd < 0) {
    sprite_index = spr_player_up;
}

///horizontal sprites
if (hspd > 0) {
    spr_index = spr_player_right;
} else if (hspd < 0) {
    sprite_index = spr_player_left;
}

哦以及玩家如何与代码交互

///moves the player in the step event
scr_get_input();
script_execute(state);

它看起来非常复杂,我只是编码语言的初学者。 我也听说过游戏制作者有一种独特的语言使其变得更加困难。 任何反馈表示赞赏!

1 个答案:

答案 0 :(得分:0)

这是一个奇怪的教程。小心分享吗?

首先,您使用phy_position_*变量,这需要您的对象是物理对象。对象是物理对象吗?在你的房间里,是否有物理世界?

您的代码一般看起来很好。 Allthough; script_execute(state);看起来很奇怪。你有一个名为state的脚本吗?如果是这样,那些内容是什么,为什么不像state()那样运行它?