Powerpoint VBAで当たり判定を考える。
まだ考え始めた段階でめちゃくちゃですが,考える過程でいろいろ新しいことにも出会えるでしょうし,
学ぶことやその過程に面白いのがでてきたりするので,書きなぐります。
Powerpointなんだから,軌跡などを使って描けばいいんでしょうけど,
速度等をうまく制御することはなかなか難しく,プログラミングのほうが楽だったりします。
前エントリの分子についてもそうです。最初は描いてみてたんです。
メンドクサイ!!の一言。パソコンに計算させたほうが速いし変化などもつけれる。
さて,最終的にたどり着きたいところは,オートシェイプの上を円が転がるようなかんじのもの。
それにエネルギーの概念を足していって,速度を決めていきたい。
動く方向をどう判断させるのかとかも考えないといけない
一度に全部判断はできないので,まずは当たり判定。ゲームプログラミングみたいだ(´▽`) '`,、'`,、
全然できてないですが,こんな感じで考えてみた
Option Explicit Sub 当たり判定() Dim TSlide As Slide: Set TSlide = ActivePresentation.Slides(1) Dim Shp(5) As Shape 'てきとう Set Shp(1) = TSlide.Shapes("Box") Set Shp(2) = TSlide.Shapes("FForm") Shp(1).Duplicate Set Shp(TSlide.Shapes.Count) = TSlide.Shapes(TSlide.Shapes.Count) Shp(2).Duplicate Set Shp(TSlide.Shapes.Count) = TSlide.Shapes(TSlide.Shapes.Count) Dim shps As ShapeRange TSlide.Shapes.Range(Array(3, 4)).MergeShapes msoMergeIntersect If TSlide.Shapes.Count = 2 Then Debug.Print "はずれ" Else Debug.Print "あたり" End If ' Stop Dim i As Long On Error Resume Next For i = TSlide.Shapes.Count To 3 Step -1 TSlide.Shapes(i).Delete Next On Error GoTo 0 End Sub
判定する二つの物体をduplicateでコピーして,その二つを合成した図形を作らせる。
好都合なことに交わらない時は,合成図形が生成されないぽい。
なので,シェイプ数の変化でとりあえず判断してみた。
きちんと あたり か はずれ かは想定通り返してくれる。
これは速度的にどうなのか。図形が増えたらどうなのか,もっといい方法はないのか,
いろいろ突っ込みどころは満載ですが,なんとなく判断はできているのはうれしい(ΦωΦ)