[GML]예측 샷 함수

태그: 

  • 이 주제에는 1개 답변, 1명 참여가 있으며 exlikeus1 주, 5 일 전에 전에 마지막으로 업데이트했습니다.
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #4002
    exlikeus
    키 마스터
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    ///shoot_predict_bullet(speed, target_obj, bullet_obj)
    /*
    Return type: Real (instance id)
    */
    function shoot_predict_bullet(argument0, argument1, argument2)
    {
     
    var _srp_speed = argument0;
    var _srp_target = argument1;
    var _srp_inst = argument2;
     
    var en_vx = _srp_target.x  _srp_target.xprevious;
    var en_vy = _srp_target.y  _srp_target.yprevious;
    var en_v = point_distance(00, en_vx, en_vy);
     
    if (_srp_speed > en_v) {
        var theta;
        var en_dir = degtorad(point_direction(00, en_vx, en_vy));
        var phi = degtorad(point_direction(xy, _srp_target.x, _srp_target.y));
        var t = en_v * cos(en_dir  phi);
     
        // Calculate discriminant
        var discriminant = t * t  en_v * en_v + _srp_speed * _srp_speed;
     
        if (discriminant >= 0) {
            var xa = + sqrt(discriminant);
            var vec_en_break_vx = xa * cos(phi);
            var vec_en_break_vy = xa * sin(phi);
     
            var bul_vx = en_vx + vec_en_break_vx;
            var bul_vy = en_vy + vec_en_break_vy;
     
            _srp_inst = instance_create(xy, _srp_inst);
            _srp_inst.hspeed = bul_vx;
            _srp_inst.vspeed = bul_vy;
        } else {
            // No valid solution; return no instance
            _srp_inst = noone;
        }
    else {
        // Speed is not sufficient to catch the target
        _srp_inst = noone;
    }
     
    return _srp_inst;
     
    }
    cs

    `

    • 이 게시글은 exlikeus에 의해 1 주, 4 일 전에 수정됐습니다.
    #4003
    exlikeus
    키 마스터

    기본적으로는 총알에는 스피드 값만 존재하면 될 것 같고, 사용은
    shoot_predict_bullet(argument0, argument1, argument2)

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.