top of page

Processingでスコア演出を実装した話

  • 執筆者の写真: さん トロ
    さん トロ
  • 2021年4月2日
  • 読了時間: 2分

こんにちは!トロです。


Processingにてゲーム制作をしていたところ……












↑こういうのが作りたくなった!(伝われ笑)


言語化すると……


プレイヤーと、上から降ってくるオブジェクトの位置座標が重なったら、

(スコアが増えたら)


一定時間得点(スコア)演出を表示したい。


調べてみても良さげなのが見つからないので「作るか〜」と意気込んだものの、

色んな方式を試した結果、数行の実装に1週間もかかりました(笑)



開発環境:Processing3.5.4

ライブラリなどは用いません。millis関数を利用します。


私のゲームではカウントダウン式なのでそれに合わせて実装していますが、

応用すれば時間を必要としないゲームとかでも使えそう。



ではソース。(スコア演出に必要な部分だけ書きます。)


1.変数の設定

int score=0;//ゲーム全体のスコアを管理する変数

float time_strat=millis();//経過時間更新用
float t=0;//ゲームの主軸となる時間

int c=0;//比較用スコア
float cnt=0;//スコア獲得時間
float millis_time=0;//どのくらいの時間表示するか

2.時間の設定

(自分のプログラムではクラス使って実装したのですが、簡略化のために関数で)

void timeCnt(){
 t = 64-((millis() - time_start)/1000.0);//カウントダウン
 /*
 前に付いてる64は消すなり変えるなり好きに使ってくださいな
 */
}

3.比較用のスコアを確保する

void collisionDetection(){ //当たり判定関数
 c=score;//現在のスコアを確保
 
 /*
  その他当たり判定とかの処理とか(ここでは省略)
 */
 
}

4.本題の演出処理

void scoreGet(){
 millis_time = 0.5;//0.5秒間表示する
 if(score > c){//scoreの値がcより大きくなったら
  cnt=t;//スコアが増えたフレームの時間tを確保
 }
 //確保した変数cntとt(現在進行中の時間)の差が変数"millis_time"以下で
 //cntが0でない(初期値ではない)時、画像"get"を表示
 if(cnt - t < millis_time && cnt!=0){
  text("get!", width/2, height/2, 100, 100);//画像表示とかの演出
 }
}

これで実装完了です。


よかったら色んなタイプのゲームで使ってみてください!


お読みいただきありがとうございました。


millis関数:https://processing.org/reference/millis_.html

はちゅねミク画像引用元:https://prcm.jp/album/rintyannau/pic/15721204



Comments


©2021 by トロさん

bottom of page