Teachers open the door but You must enter by yourself.

Open Media Lab.
オープンメディアラボ

弓のセットアップ

弓を Left Controller の子に配置

  1. Rotation の x を 90 に変更
  2. VRで確認して、弓の Position を調整する

アニメーション機能の設定(未設定の場合)

  1. Animation コンポーネントを追加
  2. アニメーションクリップ「Bow/BowPullAnimation」を追加
  3. アニメーションクリップ「Bow/BowReleaseAnimation」を追加
  4. play Automatically のチェックをはずす

ゲームコントローラの右トリガー入力を取得

  1. 弓の機能を呈するスクリプト Bow.cs を作成し、Bow にアタッチ
    
    using UnityEngine;
    using UnityEngine.InputSystem;
    
    public class Bow : MonoBehaviour
    {
    	void Start()
    	{
    		var a=new InputSystem_Actions();
    		a.Enable();
    		a.Player.Sprint.performed+=OnFire;		
    	}
    
    	void Update()
    	{
    
    	}
    
    	void OnFire(InputAction.CallbackContext c)//右トリガーが引かれると実行
    	{
    		Debug.Log("fire");
    	}
    }
    
  2. トリガーボタンを引く動作が取得されていることをVRで確認する

弓を引く動作の実現

  1. Bow.csに以下のスクリプトを追記
    
    using UnityEngine;
    using UnityEngine.InputSystem;
    
    public class Bow : MonoBehaviour
    {
    	public GameObject leftController;	
    	public GameObject rightController;
    		
    	enum State{Idle, Pull, Ready}
    	public State state;
    	
    	void Start()
    	{
    		var a=new InputSystem_Actions();
    		a.Enable();
    		a.Player.Sprint.performed+=OnFire;
    
    		state=State.Idle;
    	}
    
    	void Update()
    	{
    		float d=Vector3.Distance(
    			leftController.transform.position,
    			rightController.transform.position
    		);
    		//Debug.Log(d);
    
    		switch(state){
    			case State.Idle:
    				if(d<0.4f) state=State.Pull;
    				break;
    			case State.Pull:
    				if(d>0.4f){
    					GetComponent<Animation>().Play("BowPullAnimation");
    					state=State.Ready;
    				}
    				break;
    		}
    	}
    	void OnFire(InputAction.CallbackContext c){
    		Debug.Log("fire");
    		if(state==State.Ready){
    			GetComponent<Animation>().Play("BowReleaseAnimation");
    			state=State.Idle;
    		}
    	}
    }
    
  2. Left & Right Controller を Inspector で D&D
This site is powered by
Powered by MathJax