2020-06-13|閱讀時間 ‧ 約 3 分鐘

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

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

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

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

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

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

     

    下圖是障礙物移動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兩項都會改變

     

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

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

    把timeout設50觸發timeout event

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

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

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

    新增一個Keydown Event

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

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

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

    所以僅在demo中使用

     

     

    分享至
    成為作者繼續創作的動力吧!
    從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

    發表回應

    成為會員 後即可發表留言