前提・実現したいこと
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
回答1件
あなたの回答
tips
プレビュー