Flappy bird like LabVIEW game遊戲 (2) - 物件移動及控制

2020/06/13閱讀時間約 2 分鐘

LabVIEW FP物件並不能被消滅(至少我沒找到) 只能被隱藏

所以一開始就要布置在FP上而且要盡可能重複使用

FP上物件的位置可以從property取得, 同理也用property控制

FP往下是Y+,往右是X+, 利用while loop, 每個loop都改變一點位置

加上適當的delay即可製造出物件移動的錯覺

raw-image

 

下圖是障礙物移動demo的snippet, 另存之後直接拖曳到BD空白處即可使用

在BD上的Obs indicator按右鍵-->creat-->property node-->position就可以找到位置屬性

在LabVIEW,只會有左和上這兩個屬性, 右和下屬性必須自己用物件寬高計算

demo程式的LED物件每loop都更新Left位置往左5格, 直到左邊界位置小於0就重置為600

但不可能障礙物每次重置都是同一個高度, 這樣沒有遊戲性

所以每次Left重置時, 一併隨機改變Top的值

X*80是讓Top變動值在0~80, -1^int(X*10)是讓Top隨機往上或下移

當然也可以改成每個loop的Left/Top兩項都會改變

raw-image

 

球的控制分兩部分: 自由落體, 按鍵後往上, demo程式暫時先用event來實現

這邊還另外用了個button當ground, 避免球自由落體到無限遠處

把timeout設50觸發timeout event

裡面放讓球自由落體的程式, 使用0.5*a*(t2^2-t1^2)公式描述位置變化(圖示公式有錯)

不是用自由落體公式0.5*a*t^2是因為這是總時間落下距離不,是每單位時間

另外若球下緣位置更新後會超過ground top就設定為ground top

raw-image

新增一個Keydown Event

比對鍵盤按下的是否為空白鍵(scancode=57),

不是就do nothing, 是球就往上移30, 但不能往上移超過天花板(y=0)

球的控制用這個方法在實際遊戲操作會造成問題,按下的鍵不是空白時整個畫面會停住

所以僅在demo中使用

raw-image

 

架構分析

物件移動及控制

碰撞判定

物件配置&程式

 

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