質問内容
提示スクリプトですが参考サイトを参考にmuscleによるキャラクターの指を制御したいのですが実行画面でシリアライズを用いて様々なmuscleを変更しているのですがモデルが停止してしまいどの部位もモデルが変形しません。これはなぜでしょうか?
調べたこと
提示コードのコメント部にてすべてのインデックスを参照して変更できるか実験
変更した値が変わっているかどうか確認 提示コンソールログ
アニメーションコンポーネントの無効化して実験
参考サイト
https://zenn.dev/drumath2237/articles/2e8f47cb9fc7d55f544a
https://qiita.com/fk_chang/items/22fa70a5248a727b1622
https://marumaro7.hatenablog.com/?page=1646947454
コンソールログ
0.41 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.4103322 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.34 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.3403199 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.27 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.270308 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.22 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.2202989 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.16 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.1602878 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.09 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) 0.09027568 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) -0.01 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) -0.009742563 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) -0.14 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) -0.1397019 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) -0.23 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) -0.2297029 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) -0.3 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) -0.299704 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) -0.35 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:47) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30) -0.3497063 UnityEngine.Debug:Log (object) MuscleControl:setMuscles (int,single) (at Assets/Project/Script/Player/Control/MuscleControl.cs:56) MuscleControl:Update () (at Assets/Project/Script/Player/Control/MuscleControl.cs:30)
プレイヤーにアタッチ
cs
1using System.Collections;2using System.Collections.Generic;3using UnityEngine;4 5 6 7//[ExecuteAlways]8public class MuscleControl : MonoBehaviour9{10 private Animator animator;11 12 // 左腕の曲げ具合13 [SerializeField, Range(-1.0f, 1.0f)] private float v;14 [SerializeField, Range(0, 100)] private int i;15 16 HumanPoseHandler handler;17 HumanPose humanPose;18 19 private void Start()20 {21 animator = GetComponent<Animator>();22 //ShowMusclesName();23 24 25 26 }27 28 private void Update()29 { 30 setMuscles(i,v);31 32 }33 34 35 void setMuscles(int index,float value)36 {37 //animator.enabled = false;38 39 handler = new HumanPoseHandler(animator.avatar, animator.transform);40 humanPose = new HumanPose();41 42 43 handler.GetHumanPose(ref humanPose);44 humanPose.muscles[index] = value;45 46 47 Debug.Log(humanPose.muscles[index]);48 handler.SetHumanPose(ref humanPose);49 50 //animator.enabled = true;51 52 //書き込まれた後53 handler = new HumanPoseHandler(animator.avatar, animator.transform);54 humanPose = new HumanPose();55 handler.GetHumanPose(ref humanPose);56 Debug.Log(humanPose.muscles[index]);57 58 59 //animator.enabled = true;60 61 }62 /* 63 64 void ShowAllMuscles(float value) 65 { 66 var handler = new HumanPoseHandler(animator.avatar, animator.transform); 67 var humanpose = new HumanPose(); 68 handler.GetHumanPose(ref humanpose); 69 70 for(var i = 0; i < HumanTrait.MuscleCount; i++) 71 { 72 humanpose.muscles[i] = value; 73 74 } 75 76 handler.SetHumanPose(ref humanpose); 77 } 78 79 80 void ShowMusclesName() 81 { 82 for(var i = 0; i < HumanTrait.MuscleCount; i++) 83 { 84 Debug.Log($"{i}: {HumanTrait.MuscleName[i]}"); 85 } 86 87 } 88 */89}

0 コメント