🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3377閲覧

[Unity]Rigidbody2D.Castについて教えてください

sushisuke6

総合スコア18

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/11/13 20:02

編集2019/11/13 20:07

現在、以下のアセットにて2Dアクションゲームの作り方を学んでいます。
https://assetstore.unity.com/packages/templates/platformer-microgame-151055

私が困っておりますのはRigidbody2D.Castという関数(?)の仕様についてです。(こちらは関数と呼んでいいのでしょうか?名称についても教えていただけると幸いです。)

こちらのアセットのPlayerオブジェクトにアタッチされているPlayerController.csとKinematicObject.csの2つのソースがプレイヤーの入力を受け取り、Playerオブジェクトを操作していると思うのですが、全体的なフローを把握できずにおります。全体を把握するために、1つずつどのような動作が行われているのか確認していこうとチェックしていたのですが、Rigidbody2D.Castといった関数(?)を理解できずにいます。Unityのマニュアルは見ましたが、結局のところCastという英単語を処理できませんでした。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自分が理解した範囲でのみお答えします。
(私より理解している方がいらっしゃいましたら、間違っている部分があればご指摘お願い致します)

Rigidbody2D.Castに関してのみお答えします。
まず「キャスト」という言葉の意味に関してですが、これは異なる意味が二つあります。
(厳密にはそれぞれ言葉が違う?)

一つは「ある型の値を別の型に変換(キャスト)する」という意味です。
例えば「文字列を数値に変換する、数値を文字列に変換する」というような事をする際に使います。

キャスト - DOBON.NET

二つ目はレイキャストを例えにするとわかりやすいと思います。(Rigidboy2D.Castのキャストとは異なります)

Unityのレイキャストとは何ぞや?(自分用)

レイキャストとはレイキャスティングともいいます。
レイキャストはなにをするのかというと、ある地点から特定の方向に向かって定めた距離分、透明の線を引き、その線上にあるColliderを検知する。という役割を持っています。

Rigidbody2D.Castはこの線を引く代わりに、Rigidbody2Dと同じオブジェクトにアタッチされているすべての2Dコライダーを受け取り、指定した方向にすべての2Dコライダーを投影してヒットした物を返します。

How does "Rigidbody2D.Cast()" works?

Basically it takes all the 2D colliders attached to the same object as your Rigid Body and projects them all forward in the direction you give and returns anything they hit. Think of it as asking "If I were to move in this direction what would I hit?". It's different from a regular raycast because it's actually using the Collider Shapes instead of just shooting a line.

そういう訳で、Rigidbody2D.Castのキャストは意味的には「投じる」であり、
使い方としては2D画面上で特定方向に何かあるかを調べたいときに使う。という感じだと思います。

ざっくりとした理解としてはおそらくこんな感じであっていると思います。

投稿2019/11/14 00:51

編集2019/11/14 00:52
Y0241-N

総合スコア1066

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sushisuke6

2019/11/14 22:39

なるほど!Colliderすべてを投影するということでなんとなく意味が分かりました。各パラメータは、おそらく投影する方向、距離、検出されたcolliderにフィルターをかけるようなものなのでしょうね。ざっくりとですが理解できました。
Y0241-N

2019/11/15 00:03

おおよそお伝えすることが出来たようで何よりです。 問題が解消されたようなので、この質問を解決済みにしていただけると助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問