字幕表 動画を再生する 字幕スクリプトをプリント 翻訳字幕をプリント 英語字幕をプリント 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)
B1 中級 日本語 英 変数 パラシュート 関数 オブジェクト セット 再生 レイキャスティング - Unity公式チュートリアル (Raycasting - Unity Official Tutorials) 66 3 朱瑛 に公開 2021 年 01 月 14 日 シェア シェア 保存 報告 動画の中の単語