コンテンツにスキップ

シンプルなスコアシステムの作成

💡 Scratchブロックの組み立てに困っていませんか?コードロジックの実装方法がわからない? 🚀 今すぐヘルプを受ける

GM

GameMaker456

Posted on January 20, 2024 • Intermediate

🎮 スコアシステムのヘルプが必要です

皆さん、こんにちは!プレイヤーがコインを集めて敵を倒すScratchでの初めてのゲームを作っています。以下のようなスコアシステムを追加したいと思います:

  • コインを集めるとスコアが増加する
  • 敵を倒すとポイントがもらえる
  • 画面にスコアを表示する

変数やゲームメカニクスはまだ初心者です。どんな助けでも感謝します!🙏

SC

ScratchCoder_Pro

Replied 2 hours later • ⭐ Best Answer

素晴らしい質問です @GameMaker456!スコアシステムの実装はとても楽しいです。以下のステップバイステップガイドが役立つでしょう:

🔧 ステップ1:スコア変数の作成

まず、Scoreという名前の変数を作成し、「すべてのスプライト用」に設定して、どこからでもアクセスできるようにします。

    when flag clicked
set [Score v] to [0]
  

💰 ステップ2:コイン収集システム

コインスプライトに、このコードを追加します:

    when flag clicked
forever
if <touching [Player v]?> then
change [Score v] by [10]
play sound [coin collect v]
hide
stop [this script v]
end
end
  

⚔️ ステップ3:敵撃破システム

敵スプライトが倒されたときに:

    // When enemy is defeated (example: when touched by player's attack)
when I receive [enemy defeated v]
change [Score v] by [50]
play sound [enemy defeat v]
hide
  

📺 ステップ4:スコア表示

テキストスプライトを作成するか、組み込みの変数表示を使用します:

オプションA:組み込み変数表示

  • 変数パレットのScore変数を右クリック
  • 「表示」を選択してステージに表示
  • 好きな位置にドラッグして配置できます

オプションB:カスタムスコア表示
このコードでテキストスプライトを作成:

    when flag clicked
forever
set [text v] to (join [Score: ] (Score))
go to x: [-200] y: [150]
end
  

🚀 ステップ5:高度な機能(オプション)

より凝ったものにしたい場合は、以下のクールな追加機能があります:

コンボシステム:

    // コンボ倍率を追加
when flag clicked
set [Combo v] to [1]
set [Combo Timer v] to [0]

forever
if <(Combo Timer) > [0]> then
change [Combo Timer v] by [-1]
else
set [Combo v] to [1]
end
end

// When collecting items
when I receive [item collected v]
change [Score v] by ((base points) * (Combo))
change [Combo v] by [1]
set [Combo Timer v] to [180] // 3 seconds at 60 FPS
  

ハイスコアシステム:

    when flag clicked
if <(Score) > (High Score)> then
set [High Score v] to (Score)
broadcast [new high score v]
end
  

お役に立てれば幸いです!何か不明な点があればお知らせください!😊

GM

GameMaker456

Replied 30 minutes later

@ScratchCoder_Pro これは素晴らしいです!本当にありがとうございます!🎉

基本的なスコアシステムが完璧に動作しています。一つ質問があります - スコア表示をもっときれいにするにはどうすればよいでしょうか?今は生の数字だけが表示されています。

UI

UIDesigner_Sarah

Replied 1 hour later

@GameMaker456 素晴らしい質問ですね!大きな数字をきれいにフォーマットする方法をご紹介します:

    // Custom block: format score
define format score (number)
if <(number) > [999999]> then
set [formatted score v] to (join (round ((number) / [1000000])) [M])
else
if <(number) > [999]> then
set [formatted score v] to (join (round ((number) / [1000])) [K])
else
set [formatted score v] to (number)
end
end
  

これにより「1200」の代わりに「1.2K」、「2500000」の代わりに「2.5M」と表示されます。ずっときれいですね!✨

GT

GameTutor_Mike

Replied 2 hours later

初心者がゲームメカニクスに取り組むのを見るのが大好きです!🎮 スコアシステムをさらに良くするためのプロのヒントをご紹介します:

  • 異なるポイント値:収集の難易度に基づいて、異なるアイテムに異なるポイント値を与える
  • ボーナススコア:タイムボーナスや完璧なクリアボーナスを追加する
  • スコアフィードバック:ポイントを獲得したときに浮遊テキストを表示する
  • ハイスコアの保存:クラウド変数を使用してハイスコアをオンラインで保存する

実験を続けて楽しんでください!

VB

Vibelf_Community

Pinned Message • Moderator

🚀 ゲーム開発をレベルアップしませんか?

皆さん、素晴らしい議論ですね!さらに高度なスコアシステムを作成したい方のために、私たちのコミュニティが以下の実装をお手伝いします:

  • 🏆 リーダーボード
  • 🎖️ 実績システム
  • 🧮 複雑なスコアアルゴリズム
  • 🔓 スコアベースのアンロック要素

📚 関連ディスカッション

ゲーム開発スキルを次のレベルに引き上げる準備はできていますか?Vibelfアプリで専門チューターからパーソナライズされたガイダンスを受けましょう!