🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

解決済

1回答

1524閲覧

Unityで球体関節について

rokida

総合スコア5

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2019/11/19 17:48

前提・実現したいこと

UnityでScriptだけで棒人間(Rigなし)を動かしてみたいと思い球体関節を用いてCubeとSphereだけで棒人間を作りました。現在は肩の球のrotationをsin関数を用いて-30°くらいから30°くらい(目安)振るように実装しているところです。

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

エラーメッセージ

該当のソースコード

C#
ソースコード
private float walkspeed = 2.0f;
private float a = 1.0f;

public GameObject Rshoulder; public GameObject Relbor; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { if (Input.GetKey(KeyCode.W)) { transform.position += transform.forward * walkspeed * Time.deltaTime;//前に進む Rudehuri(1f); Ludehuri(1f); } } void Rudehuri(float rotation) { Rshoulder.transform.Rotate(new Vector3(a,0,0));//肩の球の角度を周期的に変える Relbor.transform.localRotation = Quaternion.Euler(rotation, 0, 0);//肘の角度は固定 if(Rshoulder.transform.rotation.x > 60f) { a *= -1; } if(Rshoulder.transform.rotation.x < -60f) { a *= -1; } }

また次のコードでも常に回り続けます。Rudehuriメソッドの部分だけ変えたのでそこだけ載せます。

void Rudehuri(float rotation)
{
Rshoulder.transform.Rotate(new Vector3(0.5fMathf.Sin(40Time.deltaTime),0,0));//肩の球の角度を-0.5~0.5で周期的に変える
Relbor.transform.localRotation = Quaternion.Euler(rotation, 0, 0);//肘の角度は固定
}

試したこと

上の2つの方法を試したのですが解決策がわかりませんでした。

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

unity2019.1.4f

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

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

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

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

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

y_waiwai

2019/11/20 00:01

問題は何でしょうか
rokida

2019/11/20 01:51

○ <-肩 I¯I I_I <-腕 このように配置した時に肩のSphereをsin関数で周期的にまわして腕を振らせたいのですが現在のコードではずっと回り続けてしまいます。
guest

回答1

0

ベストアンサー

動作確認しておりませんが、やりたいのはこういう事でしょうか?

C#

1Rshoulder.transform.Rotate(new Vector3(Mathf.Clamp(40*Time.deltaTime, -0.5f, 0.5f), 0, 0);//肩の球の角度を-0.5~0.5で周期的に変える

投稿2019/11/20 01:14

madone99

総合スコア1857

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問