Placeholder Image

字幕表 動画を再生する

  • Raycasting is the process of shooting

    Raycast とはある地点から透明な線 (Ray) を

  • an invisible ray from a point, in a

    特定の方向に引いて

  • specified direction to detect whether any

    その Ray 上のどこかでコライダがあるか

  • colliders lay in the path of the ray.

    検知するものです。

  • One such example of this would be

    例をあげると、

  • shooting a gun. In this instance our

    銃から弾を発射するケースです。このレッスンでは

  • character wants to shoot the evil box that

    キャラクターが、

  • betrayed him and killed his father.

    裏切り者で父を殺した敵である悪魔の箱を撃つことにしましょう。

  • The syntax of the raycast function looks like this.

    Raycast 関数の文法は次のようなものです。

  • It can be confusing at first

    最初はまぎわらしいかもしれませんが

  • but once you understand what each part does

    一回それぞれの部分で何がおこなわれるのか

  • it makes much more sense.

    理解すれば良く意味が分かるようになります。

  • Firstly, the origin of the ray is a

    最初に Ray の原点は

  • point in world space.

    ワールド空間座標のどこかの地点です。

  • So in this instance we'd choose a point in

    このレッスンでは銃の銃口の前の地点を

  • front of the barrel of the gun, stored

    どこか選んで

  • as a Vector3, an X, Y and Z position.

    Vector3 として X, Y, Z を格納します。

  • However, because our world coordinates

    しかし、ワールド空間座標の向きは

  • direction won't be facing in the direction

    撃つ方向に向いていないため

  • we're shooting we will need a second Vector3

    二つめの Vector3 により向き(direction) を

  • to store our direction in.

    格納する必要があります。

  • These two Vector3 variables make up

    この二つの Vector3 変数により

  • our ray. But we can also substitute

    Ray が構成されます。さらに Ray 変数により

  • in a Ray variable, as this data type

    代用が可能であり、このデータ型で

  • can store two Vector3's.

    二つの Vector3 変数を格納出来ます。

  • Our code would then look like this.

    コードは次のようになります。

  • The next argument in the function is a

    関数の次の引数は

  • RaycastHit variable that stores

    RaycastHit 変数であり、

  • information on the colliders hit.

    コライダの衝突にもとづいて情報を格納します。

  • So that it can be queried in code as to which

    これにより、コードの中で検索をかけて

  • objects are intersected by the ray.

    どのオブジェクトが Ray と交差するか判定出来ます。

  • Finally there are two optional arguments,

    最後に、必須ではない引数が二つあります。

  • Distance, which defines the length

    ひとつは Distance であり Ray の長さが決まり、

  • of the ray, if omitted the ray will default

    もし省略した場合、 Ray の長さはデフォルトで

  • to an infinite length.

    無限(infinity)となります。

  • And Layer Mask. This is the number

    そしてレイヤーマスク(Layer Mask)です。これは

  • of a particular layer in Unity's layer system

    Unity のレイヤーシステムにおける特定のレイヤー番号であり、

  • on which you can place objects if you

    もし Ray に無視させたいオブジェクトがある場合、

  • wish to make the ray ignore them.

    そのレイヤーに配置することができます。

  • Let's look at another practical example of

    それでは Raycast を使用した実用的な例を

  • using raycasting.

    みていきます。

  • In this example we have a parachute crate

    このサンプルではパラシュートつきの壷があり

  • that opens a parachute when it's

    フロアに近いとき、パラシュートが

  • nearing the floor.

    開きます。

  • The crate is made up of two parts,

    壷は二つの部分から構成されていて

  • the chute and the crate itself.

    パラシュートと壷そのものです。

  • The chute has two animations

    パラシュートには二つのアニメーションがあり、

  • one to open the chute

    一つはパラシュートを開くためののものであり、

  • and another to close it.

    もうひとつは閉じるためのものです。

  • In this example we need to cast a ray

    このサンプルでは Raycast を下方向に

  • downwards in order to see how far the crate is

    行なってフロアから壷がどれくらい

  • from the floor, and we check for the

    離れているかみて、environment コライダを

  • floor by looking for the environment collider.

    見つけることでフロアの確認を行ないます。

  • Our collider for the environment is tagged

    environment コライダは

  • with the word environment.

    environment という単語でタグづけされています。

  • And in our script we are looking for that tag.

    スクリプトの中でそのタグを探しています。

  • The RayCast function gets placed inside

    Raycast 関数は if 文の中に

  • an IF statement so that if it returns true,

    配置されているので、もし戻り値が true である場合、

  • meaning if it intersects with anything,

    つまり何かと交差した場合、

  • then the comments within the IF statement

    if 文の中のコマンドが実行されて

  • will be carried out and the RayCastHit

    RaycastHit 変数にクエリをかけて

  • variable can be queried as to what has been hit.

    何をヒットしたかが取得できます。

  • So within an IF statement we've written

    今回 if 文の中に

  • Physics.Raycast, we have a landingRay variable

    Physics.Raycast を記述して、landingRay 変数により

  • that's storing the position of the box

    箱の位置および下向きの方向を

  • and a downward direction. We're using

    格納します。Vector3.down というショートカット

  • the shortcut Vector3.down,

    を今回使用しています。

  • and we're using this as the ray to cast.

    そしてこれを Raycast で使用する Ray としています。

  • Our RaycastHit variable - 'hit' -

    RaycastHit 変数である hit は

  • is storing anything that gets hit by the

    下向きに Raycast するときに、

  • ray as it is cast downwards,

    Ray によりヒットを受けるもの全てを格納します。

  • and the distance, or 'length' or the ray

    そして Ray の距離、すなわち length は

  • is defined by our 'deployment height' variable.

    deploymentHeight 変数により定義されます。

  • If the ray intersects with a collider

    もし Ray が environment タグを持つコライダと

  • then we call the deploy parachute function.

    交差した場合、DeployParachute 関数をコールします。

  • This function then simply sets our Boolean

    この関数は boolean 型である deployed フラグに true をセットして

  • 'deployed' flag to true so that this cannot repeat.

    反復しないようにします。

  • And then we set the drag of the rigid body

    次に Rigidbody の Drag を

  • to the variable 'parachuteEffectiveness'.

    に parachuteEffectiveness 変数の値をセットします。

  • So we slow down the crate as if it's being

    このため 壷がパラシュートにより抑制されたかのように

  • held up by the parachute.

    動きを遅くします。

  • We also play the animation

    さらに parachute オブジェクトのアニメーションを

  • on the parachute object,

    再生して、

  • which is a game object that we'll assign

    これは public 変数に割り当てする

  • to the public variable.

    ゲームオブジェクトです。

  • We then have a separate OnCollisionEnter function

    次に別の OnCollisionEnter があり、

  • which simply plays the closing animation.

    閉じるアニメーションを再生します。

  • So we know that as soon as it hits the ground

    このため、地面または別のオブジェクトに当たると、パラシュートは

  • or another object the parachute can close.

    閉じることが出来ます。

  • So here we've set the length of the ray to 4

    ここで Ray の length に 4 をセットするために

  • by setting 4 as our deployment height

    deplomentHeight に 4 をセットします。

  • And we're setting the drag of the rigidbody to 8

    Rigidbody の Drag に 8 をセットするために

  • by setting the parachute effectiveness to 8.

    Parachute Effectiveness に 8 をセットします。

  • And we've simply dragged our parachute

    そして prop_parachuteCrate_chute オブジェクト を

  • chute object on to the parachute variable.

    Parachute 変数の上にドラッグしています。

  • Because this is the object that has an animation

    Animation コンポーネントがアタッチされているオブジェクト

  • component in order to playback

    であり、開いたり閉じたりするアンメーションを

  • it's opening and closing animations.

    再生するためです。

  • So let's see that play one more time.

    それでは再生をもう一回だけみてみましょう。

  • It's also worth keeping in mind

    シーンビューまたはゲームビューで

  • that although you cannot see

    Raycast が描画されないことは

  • raycasts drawn in the scene view

    覚えておくべき

  • or in the game. You can also use the

    です。一方で

  • Debug.DrawRay function

    Debug.DrawRay 関数を使用すれば

  • in order to preview where a ray would be going.

    Ray のプレビューをすることが出来ます。

  • By adding Debug.DrawRay

    Debug.DrawRay を追加することで

  • we're drawing a visual ray from

    Vector3.down の向きに

  • the position of the box in the direction

    箱の位置からの

  • of Vector3.down, multiplied by

    視覚的な Ray を描画して、

  • the deployment height - the length of our existing ray.

    長さとしては length に deploymentHeight を掛け算することが出来ます。

  • And by doing this we've matched the actual

    こうすることで、

  • ray that we're casting in the IF statement below.

    下の if 文で実際に行なう Raycast と一致します。

  • So when we play this back you can see that

    再生を行なうことで、

  • Unity demonstrates the ray

    Unity 上のシーンビューにて Ray が

  • by showing us the drawn ray in the scene view.

    描画されるところを確認することができます。 (翻訳:gamesonytablet)

Raycasting is the process of shooting

Raycast とはある地点から透明な線 (Ray) を

字幕と単語

ワンタップで英和辞典検索 単語をクリックすると、意味が表示されます