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