大家好,
我一直正在跟随 Sara Spalding 的 Arpg教程,每一步都在不断进展,我刚刚完成了第 19 步。
但是,我遇到了一个问题:当我用空格键激活攻击时,景深会变得很怪异,还有我的玩家对象会突然浮现在其他不可触摸的对象上面(这些对象都在一个叫做obj_entity_parent的管理器下)。
如果你有任何帮助意见,我会非常感激!
以下是所有与景深和攻击相关的代码:
玩家每次 step
//获取玩家输入
keyLeft = keyboard_check(ord("A"));
keyRight = keyboard_check(ord("D"));
keyUp = keyboard_check(ord("W"));
keyDown = keyboard_check(ord("S"));
keyActivate = keyboard_check_pressed(ord("E"));
keyAttack = keyboard_check_pressed(vk_space);
keyItem = keyboard_check_pressed(ord("I"));
inputDirection = point_direction(0, 0, keyRight - keyLeft, keyDown - keyUp);
inputMagnitude = (keyRight - keyLeft != 0) || (keyDown - keyUp != 0);
if (!global.gamePaused) script_execute(state);
depth = -bbox_bottom;
父实体的每次 step:
/// @ desc Entity Loop
if (!global.gamePaused)
{
depth = -bbox_bottom;
}
flash = max(flash-0.04,0);
攻击计算 script
功能 CalcAttack(){
//利用攻击hitbox 并检查碰撞
mask_index = argument0;
var hitByAttackNow = ds_list_create();
var hits = instance_place_list(x, y, obj_entity_parent, hitByAttackNow, false);
if (hits > 0)
{
//如果这个实例没有被这个攻击击中过,此时击中它
for (var i = 0; i < hits; i++)
{
//如果实例没有被此攻击击中过
var hitID = hitByAttackNow[i];
if (ds_list_find_index(hitByAttack, hitID) == -1)
{
ds_list_add(hitByAttack, hitID);
with (hitID)
{
if (entityHitScript != -1) script_execute(entityHitScript);
}
}
}
}
ds_list_destroy(hitByAttackNow);
mask_index = spr_player;
}
攻击 slash 脚本
功能 AttackSlash(){
//攻击刚刚开始
if (sprite_index != spr_player_attack_slash)
{
//设置正确的动画
sprite_index = spr_player_attack_slash;
localFrame = 0;
image_index = 0;
//清空 hit 列表
if (!ds_exists(hitByAttack, ds_type_list)) hitByAttack = ds_list_create();
ds_list_clear(hitByAttack);
}
CalcAttack(spr_player_attack_slash_HB);
//更新 sprite
PlayerAnimateSprite();
if (animationEnd)
{
state = PlayerStateFree;
animationEnd = false;
}
}
如果你需要更多代码,请随时问我。感谢帮助!
评论 (0)