【独り言】高校生にとって必要がないように思える三角関数や世界史も、大人にとっては必要

高校生にとって必要がないように思える三角関数や世界史も、大人にとっては必要

 高校生の頃は「なんで高校生が数学なんて勉強しなきゃいけないんだよ。こんなこと勉強しても大人になってから絶対使わないだろう。自分は別に数学の教師になりたいわけじゃないんだぞ」と思っていたのですが、まさかこんな形(同人エロゲー制作)で直接役に立つことになるとは思わなかったので、驚いています。人生では、一見役に立たないように見えるものでも、いつどこで役に立つか分からないので、役に立たななそうに見えるものでも大切に扱った方がいいという教訓を一つ得ました。

 高校の世界史の授業とかも、当時はなんの役に立つのか全く分からなくてかなり雑に勉強していたのですが、今は、もっときちんと勉強しておけば創作のアイデア源として有効活用できたのになと後悔しています。

 進路や就職先によっては、数学や世界史が役に立たないケースもあるのでしょうけれど、少なくとも自分の場合(ニート)は数学や世界史の知識は間違いなく役に立つなと最近思っています。

 知識が足りないと思えば今から勉強しても別にいいわけですが、どうせ自分が大人になった現在こうして勉強しないといけなくなるのであれば、もっと学生の頃にしっかり勉強しておけばよかったなと思います。学校の試験で点数を取るためではなく、将来の自分の同人エロゲーづくりで役立てるために、です。

 以下、引用です。
________________________________________

手札を扇状に並べるための基本的なアイデア

 >扇状に並べるには、カードの位置と角度を調整する必要があります。具体的には、円弧上にカードを配置し、各カードの回転角度をカードの配置位置に応じて調整する形になります。

>1.円弧上の座標計算
>・円弧に沿ってカードを並べるためには、各カードの座標を円の一部として計算します。これを実現するには、円の中心からの距離(半径)と角度を使って、それぞれのカードの位置を決定します。
>・これに対して、一定の角度差を持たせて配置し、例えばMath.sinとMath.cosを使ってX座標とY座標を計算します。

>2. カードの回転(Rotation)
>各カードが円弧に沿って並ぶため、カードの向きも調整する必要があります。通常のカードは水平に並びますが、扇状に並べる場合はカードの角度もそれぞれ異なる必要があります。
>各カードの回転角度は、カードの配置された角度に対して「垂直方向」になるように計算します。

>3. カード間の重なり(オーバーラップ)
>扇状にカードを並べる場合、カード同士が少し重なることが一般的です。この場合、カードの配置の間隔を調整し、重なり具合を決定します。特に中央に近いカードは他のカードよりも手前に表示されるため、手前にあるカードから順に描画することがポイントです。

>4. アニメーションの追加
カードが山札から手札に移動する際、ぬるりとしたアニメーションで円弧上に配置されるようにアニメーションを加えることも可能です。アニメーションは、各カードの初期位置と最終位置を指定し、座標を少しずつ更新していくことで実現できます。

RPGツクールでの実装ポイント

>RPGツクールMVやMZでこのような扇状に並べる手札を実現する場合も、JavaScriptベースでプラグインを作成できます。具体的な実装手順は以下の通りです。

>カードスプライトの管理

>各カードをSpriteとしてRPGツクール上に配置し、扇状の座標計算に基づいて配置します。

>カードの回転
>カードの回転もSpriteのrotationプロパティを使って調整可能です。

>カードのアニメーション
>カードの初期位置から最終位置までをアニメーションさせるために、update関数やrequestAnimationFrameを使って、毎フレームの座標更新を行います。

実装手順

>1. トリアコンタン氏の「ピクチャのボタン化プラグイン」を導入する
 まずは、プラグインをダウンロードし、RPGツクールのプラグインマネージャーに追加します。ゲーム中で「ピクチャ」をボタンとして機能させることが可能になります。

>2. 手札に表示する画像を準備する
 カードの画像を準備し、それらをRPGツクールのピクチャ機能で表示できるようにします。各カード画像をファイルとして作成し、プロジェクトの「img/pictures」フォルダに配置します。

>3. 扇状に配置するための座標計算(コーディング)
 扇状にカードを並べるための座標を計算するコードを作成します。カードの配置位置を決める際に、Math.sinとMath.cosを使ってカードを円弧上に並べます。

>以下のコードは、カードを円弧状に配置するための計算を行い、カードをピクチャとしてRPGツクールに表示するためのサンプルです。これはScriptコマンドを使って、イベントやコモンイベントで実行します。

const centerX = 400; // 扇状の中心となるX座標(画面中央)
const centerY = 300; // 扇状の中心となるY座標(画面中央)
const radius = 200; // カードが並ぶ円弧の半径
const totalCards = 5; // カードの枚数
const startAngle = -Math.PI / 3; // 扇状の開始角度(-60度)
const endAngle = Math.PI / 3; // 扇状の終了角度(+60度)
const angleStep = (endAngle - startAngle) / (totalCards - 1);

for (let i = 0; i < totalCards; i++) {

const angle = startAngle + i * angleStep;  // 各カードの角度
const x = centerX + radius * Math.cos(angle); // X座標
const y = centerY + radius * Math.sin(angle); // Y座標

// RPGツクールのピクチャ機能を使ってカード画像を表示
$gameScreen.showPicture(i + 1, "CardImage" + (i + 1), 0, x, y, 100, 100, 255, 0);

// ボタン化プラグインを使ってピクチャをボタンとして機能させる
this.pluginCommand('PictureCallCommon', [i + 1, '1']); // コモンイベントID 1を呼び出す(任意のIDに変更可能)

}

>このコードは、5枚のカードを扇状に配置し、各カードをピクチャとして表示します。
CardImage1, CardImage2, CardImage3, ... の名前でカードの画像ファイルが用意されている前提です。
showPictureメソッドで画像を画面に表示し、その後でプラグインのPictureCallCommonコマンドを使い、カードをボタン化します。

>4. カードに対するクリックイベントの設定
>「ピクチャのボタン化プラグイン」では、ピクチャをクリックした際にコモンイベントを呼び出すことができます。たとえば、上記のコードで各ピクチャに対してPictureCallCommonコマンドを使用し、特定のコモンイベント(例えば1番のイベント)を呼び出しています。このコモンイベントには、クリックされたカードに対してのアクション(カードをプレイする、詳細を表示するなど)を設定します。
例: コモンイベント

>コモンイベントID 1には、選ばれたカードを使う処理を記述します。 例えば、選ばれたカードを消す、効果を発動させるなどの処理がここで可能です。

// コモンイベント内で実行される処理(例)
// カードを選んで、手札から除去する処理
const selectedCardId = 1; // 選ばれたカードのID(プラグインでクリックされたカードのIDが渡される)
$gameScreen.erasePicture(selectedCardId); // カードのピクチャを消去する

>5. クリックしたカードのアニメーション
>クリックされたカードにアニメーション効果をつける場合、上記のコードで$gameScreen.movePictureを使用して、カードを手札から動かすことができます。

>$gameScreen.movePicture(1, 0, newX, newY, 100, 100, 255, 0, 60); // カードを新しい位置に移動(60フレームかけて)

>これにより、カードがクリックされた際に移動したり、消えるといった視覚的な効果を簡単に加えることができます。

カードが光る霧のような外見に変化して捨て札へと送られる演出の作り方

>トリアコンタン氏のGIFアニメーション再生プラグインを使用すれば、GIFをそのまま再生してカードが霧状に溶けるような効果を表現できます。

____________________
ここまで引用

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事を検索