2016-07-27 21 views
1

私は参照のためのcodepenをセットアップしました。問題は、矢印と石が衝突したときに交差点を見つける必要があることです(すべてがSVGです)。両方とも、Trebuchetの回転子をクリックすると石が動き、ページが読み込まれた後に矢印が開始されます。SVG/GSAPゲームの交差点

矢印はライトブルーの色のパスに従う必要があり、石はグレーの細いラインのパスに従います。私は狂ったように私の頭を壊しましたが、どんな提案も大きな助けになるでしょう。 codepenのリンクがある: - Click Here to view Codepen

$("#wheel-moving").click(function() { 

     $('#rope').css('display','none'); 
     TweenMax.to(".rotateFireButton", .85, {x:25, y:140, rotation:180, transformOrigin:"50% 50%", ease: Power1.easeIn}) 

     TweenMax.fromTo(".throwMachineLow", .2 , {x:2 , y:79.1 }, {x:2, y:79.1, delay:.3, rotation:57, transformOrigin:"84% 0%", ease: Power1.easeIn}) 
     TweenMax.fromTo("#heavy-block", .2 , {x:182.7 , y:71.5 }, {x:160, y:100, delay:.3, transformOrigin:"84% 0%", ease: Power1.easeIn}) 
     TweenMax.to(".throwMachineLow", .5 , {x:2, y:79.1, delay:.95, rotation:0, transformOrigin:"84% 0%", ease: Power1.easeIn}) 
     TweenMax.to("#heavy-block", .5 , {x:182.7 , y:71.5, delay:.95, transformOrigin:"84% 0%", ease: Power1.easeIn}) 
     TweenMax.to(".rotateFireButton", .85, {x:25, y:140, delay:.95, rotation:-180, transformOrigin:"50% 50%", ease: Power1.easeIn}) 
     setTimeout(function(){ 
      $('#rope').css('display','initial'); 

     } , 1500); 
     var stonePath = MorphSVGPlugin.pathDataToBezier("#stoneRunner",{align:"#stone",offsetX:-310,offsetY:-240}); 

     TweenMax.to(
      $("#stone"), 3, 
      { 
       delay:.27, 
       autoAlpha: 1, 
       visibility:'visible', 
       bezier: {values:stonePath, type:"cubic"}, 
       transformOrigin:"100% 100%" 
      }); 
     fire(); 
    }); 

function fire(){ 
     $('#wheel-moving').css('pointer-events','none');  
     setTimeout(function() { 
      $('#wheel-moving').css('pointer-events','auto'); 
     }, 2000); 
    } 
+0

これを数学的に行うのは簡単な作業ではありません。ベジェ曲線のGoogleの交差点。しかし、ベジェ曲線を直線セグメントに分割し、それらの線セグメントのどれが互いに交差するかを決定する非常に簡単な作業を行うことによって、(ゲームのための)十分な近似を得ることができます。 –

+0

私はこのスケッチ全体をスケッチで作ってHTMLに組み込んだので、支配者を使って一連の座標を取得していましたが、衝突を検出することができず、正確にどこが間違っているのか分かりません。 –

答えて

0

私は解決策を持って、第一の長さを見つけ、矢印や石の両方が交差点を見つけるために、その後、GSAPを使用してパスをたどるために作るのは簡単ですこのリンクの一番下で取得することができますhttps://css-tricks.com/svg-line-animation-works/ストロークダッシュオフセットでこの値を使用し、hit-n-trialを使用すると、交差する値を見つけることができます。値を0からpathLengthに変更すると、アイデアが得られますそれは実際にはトリッキーですが、それは時間の価値があった!私はcodepenも更新します。