Discuss Scratch

sky_77
Scratcher
500+ posts

質問コーナー3

daijitenkun wrote:

どうもdaijitenkunです。
質問なのですがアクションゲームの壁や床の当たり判定のプログラムが分かりません。教えて下さい。

この回答では不十分ということですか?
別の色にしなくても判定する方法はあります。
takkun0530
Scratcher
100+ posts

質問コーナー3

hei24 wrote:

先ほどは失礼しました。
では質問をさせていただきます。
オンラインゲームを作りたいと思っているのですが、オンラインにする方法がわかりません。優しい方教えてください。
(☁ score)
(クラウド変数)を使います。
sypu
Scratcher
500+ posts

質問コーナー3

クラウド変数を使う、ということだけじゃなくて
どのようにブロックを組むのかも書いたほうがいいんじゃないのでしょうか?
T-taku
Scratcher
1000+ posts

質問コーナー3

sypu wrote:

クラウド変数を使う、ということだけじゃなくて
どのようにブロックを組むのかも書いたほうがいいんじゃないのでしょうか?
そこをどうするかを考えるのがScratchの面白さです。
いちいちプログラムまで書かれていては、質問者が考えなくなってしまいます。
inoking
Scratcher
1000+ posts

質問コーナー3

さすがに「クラウド変数を使いましょう」だけで
オンラインゲームを作れというのは難しいと思います。

具体的なプログラムの書き方でなくとも
考え方をアドバイスしてあげるとよいと思います。

確か誰かがチュートリアル的なものを作っていたと思います。
※ちょっと探してみましたが見つけられませんでした

hei24 さんへ:
#1 に書いてある方法でトピックから検索すれば何か情報が見つかるかもしれません。
画面上部の検索ボックスで「オンライン」と入力して検索してもけっこう見つかります。
そのような作品を参考にするという手もあると思います。
miiby5591
Scratcher
72 posts

質問コーナー3

inoking wrote:

さすがに「クラウド変数を使いましょう」だけで
オンラインゲームを作れというのは難しいと思います。

具体的なプログラムの書き方でなくとも
考え方をアドバイスしてあげるとよいと思います。

確か誰かがチュートリアル的なものを作っていたと思います。
※ちょっと探してみましたが見つけられませんでした
チュートリアル的なものとは、これのことでしょうか?
inoking
Scratcher
1000+ posts

質問コーナー3

ちがいますが
それも参考になりますね。
T-taku
Scratcher
1000+ posts

質問コーナー3

ゲームにセーブ機能を付けるのであれば
この作品が参考になるかと。

Last edited by T-taku (Aug. 6, 2019 15:47:16)

horiir22
Scratcher
100+ posts

質問コーナー3

T-taku wrote:

ゲームにセーブ機能を付けるのであれば
この作品が参考になるかと。
それはオンラインとはまた違うのではないでしょうか。
inoking
Scratcher
1000+ posts

質問コーナー3

オンラインゲームはセーブ機能のことではありませんよ?
T-taku
Scratcher
1000+ posts

質問コーナー3

horiir22 wrote:

T-taku wrote:

ゲームにセーブ機能を付けるのであれば
この作品が参考になるかと。
それはオンラインとはまた違うのではないでしょうか。

inoking wrote:

オンラインゲームはセーブ機能のことではありませんよ?
すみません。
代わりと言ってはなんですが、
シンプルでわかりやすい作品を見つけましたのでURLを載せときます(作り方の説明ではないのでご注意を):
https://scratch.mit.edu/projects/287059354/editor/
KimiruHamiru
New Scratcher
500+ posts

質問コーナー3

hei24 wrote:

オンラインゲームを作りたいと思っているのですが、オンラインにする方法がわかりません。優しい方教えてください。
「オンラインゲーム」という言葉の解釈にもよると思いますが、
たぶんhei24さんが想像しているようなものであれば、すでに指摘があるように「クラウド変数」を使うのは必須です。

個人的には(New Scratcherなので)クラウド変数は使ったことがないので想像というか妄想ですが、

たとえば新規作成したプロジェクトのネコに、
このスプライトがクリックされたとき
変数[変数 v] を表示する
[変数 v] を (1) ずつ変える
みたいなコードを書いて、
ブラウザのウィンドウを2つ開いて、
それぞれで同じプロジェクトをプロジェクトページで表示、それぞれでネコをクリック。

すると、それぞれのウィンドウで、変数が別々に1つずつ増えていくかと思います。
当たり前のようですが、この「別々に」という点は、「オンライン化とは何か」を考える上で重要です。

これと同じことを、クラウド変数を使ってやった場合、つまり、
このスプライトがクリックされたとき
変数[☁ 変数 v] を表示する
[☁ 変数 v] を (1) ずつ変える
みたいなコードを書いて、
ブラウザのウィンドウを2つ開いて、
それぞれで同じプロジェクトをプロジェクトページで表示、それぞれでネコをクリック。

すると、増え方が変化するんじゃないかと思います。(リアルタイムに変化するかは確認できませんが)少なくとも「2つのウィンドウ上の変数の変化が影響しあう」ようになるんじゃないかと思います。
クラウド変数に関する私の想像が正しければ、これで「オンライン・マルチプレイヤー・クリッカーゲーム」の完成です(半分冗談ですが意味はあってると思います。ロジックが間違ってたら訂正してください)。

この「2つのブラウザウィンドウ」は、1台のPC上で動かす必要は全然なくて、もう一人が隣の席にいても地球の裏側にいても、同じプロジェクトを開けてさえいれば関係ありません。
(サーバ性能や設定次第では)同じコードで、3000人同時アクセスで協力して変数を増やすこともできます(とはいえ、サーバ性能や設定次第なのでたぶんできません)。

hei24さんは既にNew ScratchrではなくScratcherのようですし、
共有されているプロジェクトを見る限り変数も使えているようなので、
「オンラインゲーム化」に関して必要な知識はこれだけと思います。

あとは、
・この「☁変数」を、「何に使うと楽しいか」
・この「☁変数」は、「どうすればうまく使えるか」

といった問題です。

「何に使うか」の例として、たぶん楽なのはハイスコアの記録です。シューティングゲームなどでは「ワールドハイスコア」が記録されることをもって「オンライン対応ゲーム」とかいうものもあったと思います。
スプライトの座標値の管理とかキー入力内容とかに使うとマルチプレイアクションになるかも知れません。

「うまく使う」のは結構難しいようです。「サーバ性能や設定」による制限については、実際に使ってみて試していく必要があります。変数のサイズ、1プロジェクト辺りの変数の個数、同時アクセス可能数、更新速度、入れられる値の種類など、むちゃくちゃ厳しい制約があります。現在あるオンラインゲームはそういった制約をうまく潜り抜けて作られています(多分)。クラウド変数自体に慣れてきて「もっとうまくやるには」と感じ始めたら改めて質問したらよいかと思います。
制限は、「サーバ管理やコミュニティ運営をしている人のお金」の都合から来てるというのが私の理解なので、ある日突然、制限がゆるくなったり、逆にもっと厳しくなったり、ということがあるかと思います。
AnkoChannel
Scratcher
54 posts

質問コーナー3

ERUDORADO wrote:

ドラゴンが、ビームにふれてもドラゴンがきえません。どうしたらいいでしょうか?
⚑ がクリックされたとき
ずっと
もし <[ビーム v] に触れた> なら
隠す

end
end

でどうでしょう?
sypu
Scratcher
500+ posts
nyan526
Scratcher
100+ posts

質問コーナー3

https://scratch.mit.edu/projects/323410113/ のことなのですが、どうすればもう少し簡単なプログラムにできますか?
Poteto143
Scratcher
1000+ posts

質問コーナー3

改善や解説も含めてリミックスしてみました
nyan526
Scratcher
100+ posts

質問コーナー3

Poteto143 wrote:

改善や解説も含めてリミックスしてみました
見てみました。ありがとうございました。
hei24
Scratcher
9 posts

質問コーナー3

jumpをするというプログラムで、上にあがるときはだんだん上に上がるスピードが遅くなる、したに落ちるときは、だんだん速くなる、というのにはどのようなプログラムをするといいですか?
sky_77
Scratcher
500+ posts

質問コーナー3

hei24 wrote:

jumpをするというプログラムで、上にあがるときはだんだん上に上がるスピードが遅くなる、したに落ちるときは、だんだん速くなる、というのにはどのようなプログラムをするといいですか?
重力を考慮したジャンプが参考になるかもしれません。
foo-eta
Scratcher
1000+ posts

質問コーナー3

こんな感じでしょうか。
ずっと
もし<ジャンプをする>なら
[ ジャンプ力v] を [-10] にする
end
y座標を (ジャンプ力) ずつ変える
もし<地面に触れた>なら
y座標を ((ジャンプ力) * (-1)) ずつ変える
end
[ジャンプ力 v] を (1) ずつ変える
end

Powered by DjangoBB