前提・実現したいこと
弓矢を持つ人型モデルについて、弓を射るアニメーションに入ったときに利き手に矢のプレハブが生成・表示され、矢が直線状に飛んでいくようにしたいです。下記画像にあるGet→Shotの遷移でShotのステートを処理し始めるときに矢のプレハブを利用することを想定しています。
矢はプレハブとし、右手の子オブジェクトとして空オブジェクトを用意しています。
現状の問題
現状では、弓を射るモーションに入ってもプレハブの矢が生成されない状態になっています。
以下のエラーが出ています。
モデルにアタッチしたスクリプト
public class ShooterControll : MonoBehaviour
{
public GameObject lookTarget;
void Start() { lookTarget = GetComponent<GameObject>(); } void Update() { lookTarget = GameObject.FindGameObjectWithTag("Player"); if (lookTarget) { var direction = lookTarget.transform.position - transform.position; direction.y = 0; var lookRotation = Quaternion.LookRotation(direction, Vector3.up); transform.rotation = Quaternion.Lerp(transform.rotation, lookRotation, 0.1f); } }
}
右手の子オブジェクトにアタッチしたスクリプト
public class ArrowShoot : MonoBehaviour
{
public GameObject arrowPrefab;
private Animator animator;
public float arrowSpeed; // Start is called before the first frame update void Start() { arrowPrefab = GetComponent<GameObject>(); animator = GetComponent<Animator>(); } // Update is called once per frame void Update() { if (animator.GetCurrentAnimatorStateInfo(0).IsName("Shot")) { Debug.Log("射出"); Shoot(); } } public void Shoot() { GameObject arrow = (GameObject)Instantiate(arrowPrefab, transform.position, Quaternion.identity); Rigidbody arrowRigidbody = arrow.GetComponent<Rigidbody>(); arrowRigidbody.AddForce(transform.forward * arrowSpeed); }
補足情報(FW/ツールのバージョンなど)
モデルはMixamoのサンプル、
アニメーションはAssetstoreのMega Animations Packを使用しています。
あなたの回答
tips
プレビュー