Labview並沒有檢測元件overlap的功能,所以每個loop都要檢查所有障礙是否和球碰撞
首先檢查球是否位於障礙物1, 2之間的區域,上下障礙物X軸位置是一致的
如果是再近一步檢查求上緣小於3的位置或下緣小於4的位置
若其中一項成立則判定碰撞結束程式
另外若障礙物4的位置通過球到球的左側,就可以判定通過這一組障礙
程式snippet如下,另存後直接拉到BD
因為轉換上有一點問題
必須手動把三個reference control改成VI server reference才能正常執行 (如下)
到這邊事實上有個嚴重的問題:LabVIEW的FP上所有物件其實都是矩形
所以像是範例裡用的圓LED這樣的物件有時判定碰撞了但在FP視覺上是沒碰到的
處理方法有3
第一是不要用圓形的control
第二是重新定義物件的圓形邊界,在另一個Pong遊戲我是這樣處理的
第三是用自訂control,在control上蓋上比control略大的不規則圖案
因為遊戲需要本來就要修改球的外觀,所以選擇方法3
如圖選擇要自訂的control後選edit-->customize control...會開啟一個新視窗
把要貼的圖貼上後另存新的clt檔,之後我們就用這個自定的control
圖移到想要的位置之後要記得把圖和control用Lock鎖定,不然是可以分開拉動的