質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

1回答

7496閲覧

Unity 2Dのボールを弾き返す方法

chisa

総合スコア12

0グッド

0クリップ

投稿2017/01/12 21:28

###前提・実現したいこと
Unity5.5の2Dプロジェクトでピンボールのようなものを作ろうとしています。
フリッパーでボールを弾き返せるようにしたいです。

シーンにボールとフリッパーを置き、それぞれに次のようなコンポーネントを付与しました。

(ボールのプロパティ)
イメージ説明

(フリッパーのプロパティ)
イメージ説明

(フリッパーのFlipperMoveスクリプト)

using UnityEngine; public class FlipperMove : MonoBehaviour { private float angle; private void Start() { angle = 0; } void Update() { if (Input.GetMouseButton(0)) { angle += 0.7f; transform.eulerAngles += new Vector3(0, 0, angle); } } }

###発生している問題・エラーメッセージ
ボールが回転しているフリッパーに当たったときボールが弾き飛ぶような挙動を期待していたのですが、実際にはボールがフリッパーに絡みつくような動きになりました。

###試したこと
ボールに「Physics Material 2D」を追加すると期待する動きになりましたが、そうするしか方法はないのでしょうか。。

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

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

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

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

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

guest

回答1

0

ベストアンサー

>ボールに「Physics Material 2D」を追加すると期待する動きになりましたが、そうするしか方法はないのでしょうか。
基本的には、そうするしか方法は無いです。

Physics Materialは弾性や摩擦などの「物理特性」を適用するコンポーネントです。
これによりスーパーボールのような「よく跳ね返る(=弾性の高い)」物体を作ったり、
氷のような「よく滑る(=摩擦の低い)」物体を作ることが出来ます。

Physics Materialを設定しない状態だと弾性が低い為、
ちょっとぶつかっただけでは跳ね返らないのだと思います。
(不確かですが、フリッパーの回転の勢いを上げれば多少は跳ね返りやすくなるのではないかと思います)

投稿2017/01/13 11:15

sakura_hana

総合スコア11427

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

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

chisa

2017/01/13 13:13

ご回答ありがとうございます。 おっしゃる通り、フリッパーに勢いがないとボールが弾き飛ばない様です。 実証のため、次のようなことをしました。 Webサイトで3D版のピンボールのサンプルを見つけたので試してみました。HingeJointが付与されたキューブでフリッパーを作ったところ(Physics Materialを設定していない)スフィアを勢いよく弾き飛ばすことができました。次に、フリッパーからHingeJointを削除し、代わりに上記のスクリプトを試してみたところ、やはりスフィアはフリッパーに絡みつくような動きになってしまいました。
chisa

2017/01/13 13:30

追加情報です。 上記のスクリプトを修正し、フリッパーがもっと高速で回転するようにしてみましたがスフィアは弾き飛びませんでした。もしかすると、HingeJointが持っているバネの力によってスフィアが弾き飛んでいたのかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問