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

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

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

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

Q&A

0回答

487閲覧

ほぼ完成のFootIKでコリジョンをどうすればいいか知りたい

退会済みユーザー

退会済みユーザー

総合スコア0

Unity3D

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

0グッド

0クリップ

投稿2019/11/30 07:31

FootIkはほぼ完成したのですがコリジョンをどう設定すればいいかわかりません上から下に押し下げると斜めしたに落ちてしまったり中々重力で地面に押し当てながら地面に立つという動作を実現できませんどうすればいいのでしょか?
プレイヤーにはカプセルコライダーが入っています。

イメージ説明

プレイヤーのIKスクリプト

using System.Collections; using System.Collections.Generic; using UnityEngine; public class IK : MonoBehaviour { Animator anim; public Transform leftIKTarget; public Transform rightIKTarget; public Transform hintLeft; public Transform hintRight; Vector3 lFpos; Vector3 rFpos; Quaternion lFrot; Quaternion rFrot; float lFWeight; float rFWeight; Transform leftFoot; Transform rightFoot; public float ikweight; public float offsetY; // Start is called before the first frame update void Start() { anim = GetComponent<Animator>(); leftFoot = anim.GetBoneTransform(HumanBodyBones.LeftFoot); rightFoot = anim.GetBoneTransform(HumanBodyBones.RightFoot); lFrot = leftFoot.rotation; rFrot = rightFoot.rotation; } // Update is called once per frame void Update() { RaycastHit leftHit; RaycastHit rightHit; Vector3 rpos = rightFoot.TransformPoint(Vector3.zero); Vector3 lpos = leftFoot.TransformPoint(Vector3.zero); if(Physics.Raycast(lpos,-Vector3.up,out leftHit,1)) { lFpos = leftHit.point; lFrot = Quaternion.FromToRotation(transform.up,leftHit.normal) * transform.rotation; } if(Physics.Raycast(rpos,-Vector3.up,out rightHit,1)) { rFpos = rightHit.point; rFrot = Quaternion.FromToRotation(transform.up,rightHit.normal) * transform.rotation; } } private void OnAnimatorIK() { lFWeight = anim.GetFloat("LeftFoot"); rFWeight = anim.GetFloat("RightFoot"); anim.SetIKPositionWeight(AvatarIKGoal.LeftFoot,lFWeight); anim.SetIKPositionWeight(AvatarIKGoal.RightFoot,rFWeight); //anim.SetIKPosition(AvatarIKGoal.LeftFoot,lFpos + new Vector3(0,offsetY,0)); //anim.SetIKPosition(AvatarIKGoal.RightFoot,rFpos + new Vector3(0,offsetY,0)); anim.SetIKPosition(AvatarIKGoal.LeftFoot,lFpos); anim.SetIKPosition(AvatarIKGoal.RightFoot,rFpos); anim.SetIKRotationWeight(AvatarIKGoal.LeftFoot,lFWeight); anim.SetIKRotationWeight(AvatarIKGoal.RightFoot,rFWeight); anim.SetIKRotation(AvatarIKGoal.LeftFoot,lFrot); anim.SetIKRotation(AvatarIKGoal.RightFoot,rFrot); } }

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問