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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

1995閲覧

Unity2Dでプルプルしたキャラを動かしたい

jidouhanbaiki

総合スコア4

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/05/12 13:58

編集2021/05/13 13:19

前提・実現したいこと

Unity2Dで、ぷるぷるしたキャラクターを操作できるようにしたいです。
ゲームのイメージです↓
https://unityroom.com/games/bacon-bacon

発生している問題・エラーメッセージ

YouTubeのビデオを参考に、プルプルさせることはできたのですが、キャラを移動させようとすると引き伸ばされたりして原型を保っていられなくなってしまいます。
イメージ説明
このマシュマロに横移動の力(transform.Translate(0.06f, 0, 0);
)を加えると、
イメージ説明
このようにトロけてしまいます。

これを原型を留めたまま横移動できるようにしたいと思っています。

試したこと

SpringJointで、Joint同士の距離を保てる設定があるかなど、素人なりに三日間試行錯誤したのですが、情報がみつからず、ほぼ手も足も出ずといった状態です。
移動は親オブジェクトを別に作ってそちらに指示を出しています。

補足情報(FW/ツールのバージョンなど)

参考にしたYouTubeのビデオはこちらです。
https://www.youtube.com/watch?v=H4MTeKT0QFY&t=306s
このプルプルキャラを移動させるための資料が探し出せませんでした・・・。
参考ビデオのようにbone9に横行動を加えると、bone9だけが移動してしまい、マシュマロ本体がついてこなかったのでマシュマロ本体に移動処理を行なっています。
(マシュマロは仮の画像です)
ど素人なので基礎的なところが抜け落ちているのかも知れませんが、ご指導よろしくお願いします。

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

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

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

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

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

Bongo

2021/05/12 23:20

どういう風に引き延ばされてしまうのか映像があると手がかりになるかもしれませんね。バネの弾性が弱いとなると、ジョイントのFrequencyが足りないとかでしょうか。ある程度Frequencyが大きければバネの長さは自然長に近づくよう伸縮すると思うのですが... 他にも、念のため移動させるためのスクリプトもご提示いただくといいかもしれません。ご参考になさったビデオでは中心のRigidbody(ビデオの場合は9番ボーン)に力を加えて移動させているようですが、それとは違う方法を採用されたのでしょうか?
退会済みユーザー

退会済みユーザー

2021/05/13 07:27

知識ゼロで軽く触ってみましたが、動きを観察してどの部分が機能していないか?を見つけないと難しい気がしました。 接続しているボーンがおかしい、 コライダーが小さすぎる、 メッシュ分割、ボーンウエイトの自動設定が悪さしてる?とか、 可能性だけを考えると色々出てきそうです。 試されていないかもしれませんので視覚で見る確認方法を。 シーンとPlay画面の2画面設定でPlayMode、動かしているオブジェクトを選択します。 で、Gizmos表示させていれば、デバッグ表示が色々でますので動かすと、おかしな動きをしている部分が見えるかもしれません。
guest

回答2

0

ベストアンサー

なるほど、Translateを使って動かしているのですね。
たとえばマニュアルの「Rigidbody 2D」には...

Rigidbody 2D コンポーネントは Transform をオーバーライドし、Rigidbody 2D によって決められた位置/回転へ更新します。Transform コンポーネントを手動で変更することによって Rigidbody 2D をオーバーライドすることもできますが (Unity はすべてのコンポーネントに関するすべてのプロパティーを表示するので)、オブジェクトが互いに通り抜けたり、中に入ったり、予期せぬ動きをしたりするなど、問題の原因となることもあります。

との記述があります。Translateの実装をご覧いただきたいのですが、Translateメソッドは実際のところpositionを操作するのと同等であり、マニュアルにある「Transform コンポーネントを手動で変更する」という行為に該当するはずです。positionの操作による位置変更だとジョイントの拘束を受けずに移動できてしまうでしょうから(「bone9に横行動を加えると、bone9だけが移動してしまい」という症状もこれに起因していそうです)、それが異常動作の原因になっているのかもしれません。

ご提示いただいたビデオでは移動にAddForceを使っていますが、もしどうしてもTranslateを使いたい理由がなければ、代わりにAddForceを使ってみてはいかがでしょうか。
その上でまだ変な挙動をするようでしたら、コメントいただければさらに修正案を検討してみようと思います(意図通り動けばそれに越したことはないのですが、もしかすると個々のボーンがコロコロ回転するためにねじれたような変形をしてしまうかもしれません)。

投稿2021/05/13 14:35

Bongo

総合スコア10807

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

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

jidouhanbaiki

2021/05/21 15:07

Translateが原因だったようです!! AddForceによる移動にしたら解決いたしました! ありがとうございました!
guest

0

TranslateではなくAddForceを使う。
Translateだとバグが発生してしまう。

投稿2021/05/21 15:09

jidouhanbaiki

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問