なんてこった...
Unityのオブジェクトで#1の跳ね返りができてしまいました。。
必要なもの
- Unity Hub ver:3.1.1(多分新しくても問題ないでしょう)
- 猫への愛情
- 遊び心
- C#若干の知識
手順
言語を英語に戻す
色々調べているとみんな英語のまま作業してる感じなんですね。
言語を英語に戻しておきます。
#1で実装したUpdateメソッドを削除する
前回実装したのはいらない子になります。。
オブジェクトの準備
下記のような感じにオブジェクトを用意します。
"Wall"と"PlayObject"は"Create Empty"で空のものを作って、前者には2Dの四角形オブジェクトを4つ入れます。
後者には前回作った円オブジェクトを入れます(ドラッグ&ドロップでできます)。
構成を見てなんとなく察すると思いますが、画面外の判定をするオブジェクトを配置することで、円とそのオブジェクトの衝突を判定する感じですね。
前回は無理やり過ぎました。。(笑)
壁の設定
配置
まずは4つのオブジェクトの大きさや位置を調整します。
厚さや配置方法は好みですが、私は4隅が重なった配置にしています。
- 縦長の枠
- Scale X:0.5, Y:11, Z:1
- 左側のX地点: -9.75
- 右側のX地点: 9.75
- 横長の枠
- Scale X:20, Y:0.5, Z:1
- 下側のY地点: -5.25
- 上側のY地点: 5.25
私は上記のような設定をしましたが、四角形の枠ができていれば問題ないです。
また、色はデフォルトで白でしたが透過率を上げて透明にしてもよいかもしれません。
コンポーネント
そしてそれぞれの壁にBoxCollider2Dのコンポーネントをセットします。
これで壁に物理判定ができるようです。
球の設定
コンポーネント追加
さて肝になる部分です。
"跳ね返り"を定義するために、Assetフォルダを右クリックして"Physic Material 2D"というものを選択します。
これが摩擦係数や反発係数を持つ情報なようです。
そしてこれを前回作成した"Rigidbody 2D"のMaterialにセットします(名前は変えた方がいいです)
更に!この球にも壁と同じように判定を与える必要があるので、球に"Circle Collider 2D"を追加します。
動かしてみる
動かすとなんと物理判定があります!!!
が!!跳ね返りませんでした。
ここでAssetに追加した"physic Material 2D"の設定を変更しましょう。
- Friction: 摩擦係数 → 0 (減衰はいらないので)
- Bounciness: 反発係数 → 1 (元の速度を維持したまま跳ね返してもらいます)
これで跳ね返りました!!
物理的な計算はオブジェクトを使えないか考えることが大事そうですね。
Unity素人でスミマセン!!
お詫びに画面で遊ぶ猫を。
追記
なんとなんと、"Dynamic Sprite"オブジェクトを追加することで、"Circle Collider 2D", "Ridgidbody 2D"コンポーネントを適用したCircleオブジェクトが生成できました。
やっぱりよく使われるものはあるんですね~
← PREV: ゴリ押しで球を反射させてみた(素人)