1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

前回、スクリプトをかいてオブジェクトに当たり判定をつけるところまでできました。
今回はUnity独自の機能のひとつであるPhysicsを使ったゲーム作成に取り組んでみます。

前回の記事

Physicsとは

Unityに標準で付属している物理エンジンです。
使うことで簡単にオブジェクトを物理法則にしたがって動かせます。

Physics 2Dの種類

大きく5種類に分けられるかと思います。

  • Rigidbody…オブジェクトを物理エンジンで制御する。
  • Collider…オブジェクトの衝突エリアを作れる。エリアの形の種類によっていろいろある。
  • Joint…オブジェクトをつなげる。
  • Constant Force…時間とともに加速させたい場合に使える。
  • Effector…Colliderに対してエフェクトを追加する。

重力を実装する

Rigidbodyを使うことで実装できます。

「AddComponent」をクリックします。
image.png

クリックするとComponentの種類を選択する画面が表示されるので、「Physics 2D」をクリックします。
image.png

「Rigidbody 2D」をクリックします。
image.png

ポチポチ操作だけで重力が実装されました。
では、本当に重力が実装されたか確認します。

動画ではないため伝わりにくいのですが、実行すると重力に従って落ちていき、🦀が見えなくなりました。(🦀のPositionのy座標が0からマイナスになっています)
image.png

他のオブジェクトと衝突させる

Colliderを使うことで実装できます。

Colliderにはその形によって何種類かあるのですが、一旦ここではCircle Collider 2Dを選択してみます。
image.png

適用されると、少し見えづらいですが、オブジェクトに丸い円が表示されます。
これは当たり判定に使われます。
image.png

では、着地ができる地面のオブジェクトを追加してみることで、オブジェクトとの衝突を検知できることを確認しましょう。
image.png

地面のオブジェクトにBox Collider 2Dを追加します。
image.png

追加出来たら加えて、Rigidbodyも同じ要領で追加します。
ですが、このままだとブロックにも重力を加えたことで、ブロックも落下してしまいます。

重力の影響を受けない設定

地面に追加したRigidbody 2DのBody TypeをKinematicに変更します。
image.png

動かしてみると、無事に🦀が地面に着地できました。
image.png

地面と🦀の間に余白があるように感じるのは、Circle Collider 2Dの円を調整しておらず、でかいためです…

おわりに

画面ぽちぽちだけどこんなに簡単に物理法則をオブジェクトに追加できて驚きました。
次回はPhysicsを使って、ジャンプや移動を実装してみます。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?