Game maker studio 2 用于绘制目标的Gamemaker dcos()和dsin()

Game maker studio 2 用于绘制目标的Gamemaker dcos()和dsin(),game-maker-studio-2,aim,Game Maker Studio 2,Aim,gif将更好地解释我试图做的事情。 正如你所看到的,我无法让箭跟随目标。问题是我把弓和箭分开了,所以弓产生了箭,这就是问题所在,我无法计算出箭的速度、速度和重力,以匹配点目标的拉弓事件。我将发布圆点瞄准代码和箭头重力/移动代码箭头的繁殖代码很简单,只要松开按钮,它就会在弓的x,y位置繁殖箭头。如果你需要任何其他代码,我会发布它。对不起,如果解释得不清楚的话 箭头代码: 结束步骤 鞠躬: 付款人: var _f_x = x; var _f_y = y; var _f_spd_x = draw_a

gif将更好地解释我试图做的事情。

正如你所看到的,我无法让箭跟随目标。问题是我把弓和箭分开了,所以弓产生了箭,这就是问题所在,我无法计算出箭的速度、速度和重力,以匹配点目标的拉弓事件。我将发布圆点瞄准代码和箭头重力/移动代码箭头的繁殖代码很简单,只要松开按钮,它就会在弓的x,y位置繁殖箭头。如果你需要任何其他代码,我会发布它。对不起,如果解释得不清楚的话

箭头代码: 结束步骤

鞠躬:

付款人:

var _f_x = x;
var _f_y = y;
var _f_spd_x = draw_aim_circle_max * dcos(controler_angle)
var _f_spd_y = draw_aim_circle_max *-dsin(controler_angle)

while (!instance_place(_f_x,_f_y,objAimCircleKiller))
    {
        draw_sprite(sprAimCircleSmall,0,_f_x,_f_y+1);
                        _f_x += _f_spd_x
                        _f_spd_y += grav_aimCircle 
                        _f_y += _f_spd_y;
    }
    

你们有一些箭头中的代码来降低水平速度吗?它似乎停得比它应该停得快。尝试使用不同的变量来管理水平速度,而不是重力变量。 计算箭头的x速度时,定义一个显式值“最大速度”。当正弦角为90°时,箭头速度应为最大速度,当正弦角为0时,箭头速度应接近0。然后只需使用arcsin函数从0/1中获取一个值,并乘以最大速度

    var maxHorSpeed = 10;
    var aimAngle = lengthdir_y(bow.x,bow.y,target.x,target.y);
    
    arrow.horizontalSpeed = clamp( sin(aimAngle)*maxHorSpeed,0.2, maxHorSpeed);

尝试将
\u f\u spd\u y+=grav\u aimCircle
\u f\u y+=u f\u spd\u y的顺序反转@YOUSFIMohamedWalid以获取评论。不过没什么区别。嗨,泰,请发表评论。我想我知道问题出在哪里了。创建箭头后,我设置了箭头的一些变量,并将motion_set()添加到创建的箭头中。因此它开始移动:使用(实例创建(mid_x(objBow),mid_y(objBow),objArrow)){image_angle=other.controler_angle;target=objEntity;damage=other.damage;knockback=other.knockback;motion_set(image_angle,32);}
    var maxHorSpeed = 10;
    var aimAngle = lengthdir_y(bow.x,bow.y,target.x,target.y);
    
    arrow.horizontalSpeed = clamp( sin(aimAngle)*maxHorSpeed,0.2, maxHorSpeed);