2017-05-23 11 views
0

私はツインスティックシューティングをしようとしていますが、正しい方向に撮影するために正しいアナログスティックを取得できません。私が武器をプレイヤーの上に置いて回転させるコードはここにあります。それはすべての作品が正常に正しいスティックの正しい角度を取得し、その方向に弾丸を発射する方法を知る必要があります。ゲームメーカーGMLツインスティックシューティングアナログコントローラ

 //set depth 
    depth = -y + obj_player.y_off_set - 1; 

    //analog left stick face direction 
    var h_point = gamepad_axis_value(0, gp_axisrh); 
    var v_point = gamepad_axis_value(0, gp_axisrv); 

    if ((h_point != 0) || (v_point != 0)) 
    { 
    var pdir = point_direction(0, 0, h_point, v_point); 
    var dif = angle_difference(pdir, image_angle); 
    image_angle += median(-20, dif, 20); 
    } 

    //flips gun when turning 
    if(gamepad_axis_value(0, gp_axisrh) < -0.5) 
    { 
    image_yscale = -1; 
    }else if (gamepad_axis_value(0, gp_axisrh) > 0.5) 
    { 
    image_yscale = 1; 
    } 

//fireing 
fire = gamepad_button_check_pressed(0, gp_shoulderr) && alarm[0] <= 0; 


if(fire) 
{ 

    var face = point_direction(0, 0, gp_axisrh, gp_axisrv); 

    var p = instance_create(x, y, obj_projectile); 
    var xforce = lengthdir_x(20, face*90); 
    var yforce = lengthdir_x(20, face*90); 
    p.creator = id; 
    with (p){ 

    physics_apply_impulse(x, y, xforce, yforce); 

    } 

答えて

0

この質問は数ヶ月古いとして、私はあなたの問題への解決策を見つけた想像し、うまくいけば、この答えは問題に誰が立ち往生することができます。

提供したコードスニペットに基づいて、* 90をlengthdir_機能から削除すると、コードが機能するはずです。

ここで私は、360度の撮影が右アナログスティック(このコードはPlayerオブジェクトのステップイベントに住んでいる)での作業を取得するために私のゲームで書いたコードです:ゲーム会社に

if (shooting) { 
    bullet = instance_create(x, y, Bullet); 

    with (bullet) { 
     haxis = gamepad_axis_value(0, gp_axisrh); 
     vaxis = gamepad_axis_value(0, gp_axisrv); 
     dir = point_direction(0, 0, haxis, vaxis); 

     physics_apply_impulse(x, y, lengthdir_x(50, gp_axisrh), lengthdir_y(50, dir)); 
    } 
} 

このparticular threadは、私のゲームでこの問題を解決する方法を研究したので、コミュニティフォーラムは非常に役に立ちました。

関連する問題