レインボートレイルの作成(2022) 今日は、レインボートレイル、虹が出てくるコードをRobloxで学習していきましょう。Robloxの利点は、コードを実行したら直ぐに結果が出ることなんですが、学習した内容についてコードを見ると、少し難しいと思うかもしれませんが、挑戦してみて下さい。できたらコメントで教えてもらえると嬉しいです。 では、パーツを作成して、グループを選んでモデルに変更します。タッチイベントを練習してTouched Eventの書き方に慣れてくると思います。 Trail作成 Trailの作成の仕方はご存知ですか。作成後、 アバターに接続されるようにコードを書いていきます。 エクスプローラの [Workspace] に作成したモデル.partで、カーソルを合わせて、+ ボタンをクリックします。オブジェクトリストが表示されます。[Trail] が見つかるまでオブジェクトの リストを下にスクロールして探してクリックします。 Trialが作成されたら色を変更します。変更の仕方は、プロパティのColorで、数字の255の右横にある、…省略記号をクリックすると、Colorボックスが出てきますので、色のボックスをクリックして、色を選んでください。色を付け加えたい場合は、三角形の箇所をマウスでクリックし追加すると、そこから新しい色を追加することができます。 スクリプト Partにカーソルを合わせて、+ ボタンをクリックします。[スクリプト] を選択し、クリックして開きます。 次に、スクリプトにコードを配置する必要があります。以下のコードをコピーして貼り付けることができます。 スクリプトをコピーして貼り付けた後、プログラムをテストして実行してください。
Tag Archives: 子供のコーディングクラス
レーザービームのレンダリング
#68 CFrame()を使ったポジションと方向の割出し こんにちは。前回の動画 (#67) で銃を作成しました。今日はその銃からビームを出す方法を話していきたいと思います。今現在の状態の説明をしますと、マウスでターゲットとする敵を一回クリックするとアウトプットに「相手をヒットしました」と表示される状態になっています。なので今日は、この銃からレーザービームを発射ができるCFrameについて触れていきましょう。もちろん銃の連射というのもコードを追加することで可能です。でもここでは、一回のクリックで一回のビームがでる方法を学びます。 先ず ModuleScript を使用します。モジュールスクリプトの中で書いたコードは、どこでも使用できますが、この関数のコピーを複数持つことは、その動作を変更する必要があるときに大変なことがあるので、したがって、ModuleScriptsで関数は、ScriptsとLocalScriptsでModuleScriptsを呼び出すrequireが必要とあります。 フォルダーのStarterPlayerの下のStarterPlayerScriptsの中にこれを作成し、名前をLaserRendererと変更して、で、その中にSHOT_DURATIONという名前の変数を宣言していきます。Durationというのは期間という意味ですから、これはレーザーが見える時間(秒単位)を指定したということだと想像できますね。関数を作成しますが、モジュールスクリプトで書く関数の書き方はモジュールスクリプトの名前、その後にドットで単語を続けてそして関数の名前となります。この関数の中で、銃の引き金を引いてビームを発射するビームを作るという訳です。 プレイヤーの持つレーザーブラスターの位置はtoolHandleで取得して、toolHandle をドットでPositionの単語と繋げてstartPositionという名前の変数を宣言します。 LaserDistanceという名前の変数を宣言して、ここでパラーメータの引数のendPositionからstartPositionの2つの値のベクトルの差を求めます。これにMagnitudeプロパティを使用して、レーザービームの長さ(大きさ)を取得します。 さて、今回の注目点は、laserCFrameという変数を宣言した後に、CFrame.lookAtのコンストラクターを使用しています。コンストラクターはビームを発射させるためにコンピューターに手続きをすると考えてください。ここでの手続きの内容は、レーザービームの位置、そしてレーザービームの方向を決めています。 Robloxゲームの世界では、位置(0、0、0)はゲームの中心にあります。「正面」方向は常に負のZ方向であり、「右」方向は常に正のX方向です。パーツのPositionプロパティは、常にワールドスペースでの位置を参照し、絶対位置とも呼ばれます。 コード内の位置データを操作する場合、最初に位置と方向を最初にワールド空間に変換すると非常に便利です。今後遭遇する幾何学の問題を解決するための基礎としてそれを使用してください! lookAtのZ軸をlaserDistanceの半分の長さを取得するのに、負の値を掛け、半分に割ることで中点を取得し格納するという役目をしています。 レーザービームのプロパティーをセットします。LaserPartをInstanceで作成した後に、サイズ、色、マテリアル等が設定されています。そして最後に、パーツをDebrisサービスに追加することで、(デブリは瓦礫ということですから)それをSHOT_DURATION変数の秒数の後にレーザービームが削除されるようにします。 これで、レーザービームをレンダリングする関数が完成しましたので、ここから、ToolControllerにいって、この関数をToolControllerから呼び出すことをしていきます。 ToolControllerスクリプトの上部で、LaserRendererという名前の変数を宣言します。 fireWeapon関数の下部でLaserRenderer関数を呼び出します。 再生ボタンをクリックして武器をテストします。ツールがアクティブになると、武器とマウスの間にレーザービームが見えるはずです。 ここまでできたらほぼ出来上がっています。今日の内容のコードはこちらを参考にしました。コードをコピペされる場合はこちらをクリックして下さいね。 武器のコントールのコードについては動画には載せていませんが、プレイヤーが短時間で多くのダメージを敵に対して与えるのを防ぐために、各ショットの間に遅延を用いて、クリックの速度に関係なく、各ショットの間に短い遅れをとるゲームのコントロールをすると促しています。これはRobloxで自分のゲームを作成される時にこういった細かいところで制御する方法が大切だということでしょう。 Robloxのサイトは、素晴らしい知識と探求の楽しみがいっぱいですね。皆さんはいかがでしか。本日は有難うございました。 良いコードの書き方というのは新しい機能を追加しても、エラーが出ない優れたロジックから成り立っているものだと思います。もちろんそれをする為には常にコードの書き方が一致した内容でコードが書かれてないと読み難い、結果、理解もできないとなりますよね。RobloxのDeveloperサイトでは、その様な書き方を正しくちゃんとしています。それによって、慣れてきたときには既に素晴らしロジックを身についているでしょう。 シリーズの動画 #64:Roblox ゲーム内で使用する銃の作り方 #65:Roblox ゲーム内で使用する銃の効果音のスクリプト #66:衝突を見つけるためのレイキャスティング #67:レイキャストが武器を発射:プレイヤーと誤って衝突しないようにする その他参考にしたサイト Weapons Kit NPC Kit CFrameを理解する Object and World Space
ゲーム色が変わるコード
Lua言語は、RobloxやCoreのゲームクリエーションプラットホームに使用されています。少しずつでも、コードに慣れていくのが目的で、このTargetのコマンドを紹介しようと思いました。マウスをクリックする度に、プレイトの反応をみて下さい。Robloxのゲームを作成するときに、こんな面白いことが起きてもいいのではないかと思うかもしれません。 さて、Robloxスタジオは開きましたか? カラーランダマイザーツール・Color Randomizer Tool プレーヤーのバックパックに、次のコードサンプルを配置するとStarterPlayerScriptsと、ツールが作成されます。このツールを装備すると、プレーヤーがBasePartをクリックするたびにBasePart.BrickColorツールが変更されます。 では、これをスタジオで実行して見てください。 ホットバー、Toolが表示されますね。Toolをクリックし、ベースをクリックすると、あらあら不思議?色がどんどん変化しますね。 ここで注目するのは? 7行目:ToolのHandleがFalseに設定されています。 実際にStarterPackにツールを作って、Handleオブジェを入れた状態でこのプログラムが実行できるかどうか、考えてみてね。
Student projects Ichiban
描いた言葉は「日本一」 これはRaspberryPiとSenseHATを学習した際に、生徒が次の方法を自主学習され、出来上がった作品のリンク先を送ってくれたものをスライドショーにしました。 Pythonを使用してSenseHATと通信する SenseHATの出力にアクセスする SenseHATの入力をプログラムする SenseHATライブラリを使用してメッセージと画像を表示する 変数を使用してセンサーデータを保存する ループを使用して動作を繰り返す スライドショーの矢印をクリックすると「日本一」が出できます。 プログラムを難しいと思わないで、挑戦と失敗を良い経験と思って取り組んでくださっている親御さんのお子様に対するご姿勢と優しく応援する言葉は、私も学びたいと思っています。いつもありがとうございます。
RemoteEvents:Client to Server
Level : Robloxのレッスン1〜4を終了したレベル 今回は、Robloxのリモートイベントを使用し、クライアントからサーバーに通信する方法を学習していきましょう。これはRobloxでのマルチプレイヤーゲームの一般的な機能を理解できるコードの書き方になります。 リモートイベントというのは、クライアントー>サーバーに通信するとき使用します。サーバーはインターネットで繋がっている大きな強力なRobloxコンピューターで、クライアントは、パーソナルコンピューター、携帯、タブレット、またはゲームコンソールです。 クライアントが、サーバーと通信するには、リモートイベントとリモートファンクションの2つのリモートのどちらかを使用します。 リモートイベントは、one-way communicationというデザインがなされていて、リモートファンクションはtwo-way communicationというデザインで構成されています。 リモートイベントには4つの使用方法があって、それぞれ情報の送信の仕方が目的によって異なります。 今回は、リモートイベントのクライアント→サーバーの通信方法を使用していきます。 この方法は、例えば、ユーザーがロブロックスのゲームを実行し、キーボードの ” e ” を押した時、新しく作成されたパーツがサーバー上のすべてのユーザーの画面に表示されるようになります。 その他のリモートイベントとリモートファンクションの使用方法は、…今のところは、リンク先からご参考にされて下さい。 下記リンク先のステップは、Robloxスタジオのインターフェイスを学習します。なんでも最初は真似してみましょう。このステップをやってプログラムが上手く走ると、サーバーと通信してパーツを表示することができます。 Robloxのサイト:Remote Functions and Events Using Remote Events(2ステップ) Client toSeverを行って下さい。(3ステップ) 上記の内容のステップができたら、実際にパーツが作成されるかどうかテストをしましょう。
Python「正多角形」プロジェクト
Level:初心者(PythonのBasicsのレッスン1と2が終了したレベルです) 前書き このプロジェクトでは、「辺の長さが全て等しく,角の大きさも全て等しい」という正多角形の性質を使って図形を描きます。このプログラムは、一連の動きを特定の回数だけ実行し図形を描く方法を考えます。さらに再利用可能な一連の操作は、色々な図形に活用できる様にプログラムを構成していきます。 ルール:コンピューターは、何角形の図形を描きたいかを聞きます。次に、その図形の一辺の長さを聞きます。一辺の長さはピクセルで表します。 ここをクリックすると正多角形(正方形、正三角形、正六角形等)が描けます。 1. 1つ目の質問 このTrinketを開きます。:https://bit.ly/3pW12yJ コード1行目にこのプロジェクトで使用する亀のモジュールがすでにインポートされています。 import turtle 3行目は、printステートメントでプログラムの目的を表示します。 print(‘亀が図形を描きます。’) 4行目は、プレーヤーに図形の辺の数値を入力してもらいます。変数名のsideは、英語で一辺のことを表します。プレーヤーが入力した数字を変数に保持しています。 では、ここからTrinketの Remixボタン を押して、登録アカウントを作成、書いたコードをセーブしていきましょう。Remixしないと保存できませんが、コードを書くことはできます。 次にプレーヤーが整数以外の数字を入力した場合のために、intを使い全ての入力が整数になるようにします。 side = int(side) クイズ!プレーヤーが入力した数字を出力するにはどうしますか。 print(‘side’) print(side) print() 答えはこちらです。 2番のprint(side)でした!プログラムにコードを書いて、数字が出力されるか試して下さいね。
Pythonレッスン
学習を開始する準備はできましたか? Pythonコードは、コード初心者でもわかりやすく、直ぐに理解することができます。例えば下のコードですが、この内容を習う過程でいつくかの数学的かつ創造的な要素を学習することになります。 図形を描くための「辺の数」と「回す角度」ルール タートルモジュール 入力と出力の方法 変数と関数 ループ等 このプログラムを実行すると図形が描けます。先ずは、実際に数字を入れて図形を描いてみて下さい。下のリンク先からどうぞ。 亀が図形を描きます。 (3、4、5。。。角形等) あなたの亀は、図形を上手く描くことができましたか? コードの学習内容は、数学の様に論理で考え、コードが爆速でわかる様に、展開の順序を考えます。 良い質問です! 高校生くらいの学習者になると、例えば、11行目の割り算について質問をするかもしれません。 s = 360 / side この内容はさらにプログラムを学習したい生徒が習うことになりますが、 s = 360 / side のsideを0にして、360を0で割ることができないのは何故ですか?と、数学的にどうして0で割ってはいけないのかを質問されるかもしれません。その内容については、こちらの内容を参考にされて下さい。そして、Pythonに限らず大抵のハイ-レベル言語(HLL)の場合、Exceptionsというオブジェクトを学習することで、この問題を改善することを可能にしてくれることを発見します。 コードを実際に体験した子供は、理論に従ってコードを書き直すことに興味が湧き、デバッグというプロセスをしながら解決策を自分で見つけ出す練習をします。時に、エラーに対し「プログラムが文句を言っています」と、ユーモア溢れる言葉で私を笑わせてくれますが、しかしそれは、本当にその通りですね。 このPythonコードは私のレッスンの一つの例ですが、この様なプロセスはPythonの面白さを発見する良いヒントが詰まっています。Exceptionsに到達するまでにたくさんの学習内容、プロジェクトをこなしていきますが、これができる様になると、今度はオブジェクト–指向プログラミング(OOP)を学習することができる様になると思います。