Flappy bird like LabVIEW game遊戲 (3) - 碰撞判定

2020/06/16閱讀時間約 1 分鐘

Labview並沒有檢測元件overlap的功能,所以每個loop都要檢查所有障礙是否和球碰撞

首先檢查球是否位於障礙物1, 2之間的區域,上下障礙物X軸位置是一致的

如果是再近一步檢查求上緣小於3的位置或下緣小於4的位置

若其中一項成立則判定碰撞結束程式

另外若障礙物4的位置通過球到球的左側,就可以判定通過這一組障礙

raw-image

程式snippet如下,另存後直接拉到BD

raw-image

因為轉換上有一點問題

必須手動把三個reference control改成VI server reference才能正常執行 (如下)

raw-image

 

到這邊事實上有個嚴重的問題:LabVIEW的FP上所有物件其實都是矩形

所以像是範例裡用的圓LED這樣的物件有時判定碰撞了但在FP視覺上是沒碰到的

處理方法有3

第一是不要用圓形的control

第二是重新定義物件的圓形邊界,在另一個Pong遊戲我是這樣處理的

第三是用自訂control,在control上蓋上比control略大的不規則圖案

因為遊戲需要本來就要修改球的外觀,所以選擇方法3

如圖選擇要自訂的control後選edit-->customize control...會開啟一個新視窗

把要貼的圖貼上後另存新的clt檔,之後我們就用這個自定的control

raw-image

圖移到想要的位置之後要記得把圖和control用Lock鎖定,不然是可以分開拉動的

raw-image

 

架構分析

物件移動及控制

碰撞判定

物件配置&程式

 

 

    5會員
    56內容數
    ktest
    留言0
    查看全部
    發表第一個留言支持創作者!