質問編集履歴

1 lookオブジェクトのアニメーションの変化を操作するスクリプトの追加

oinari_san

oinari_san score 4

2019/03/24 08:40  投稿

eulerAnglesをfloat型に代入すると0になる
### 前提・実現したいこと
2Dのシューティングゲームを作成しています。
右スティックの向きでアニメーションで矢印の向きが変わるようにしました。
矢印の向きに弾を発射させたい。
### 発生している問題・エラーメッセージ
float型にtransform.rotation.eulerAngles.zを代入してその値の角度に弾を発射させようとし、右スティックを動かしてみると0が代入されています。
### 該当のソースコード
lookオブジェクトの向きを読み取るスクリプト
```C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
   public float speed; //移動の速さ
   float horizontal;
   float vertical;
   float horizontal2;
   float vertical2;
   Vector3 velocity;
   GameObject look; //矢印
   public Shot shotPrefab; // 弾のプレハブ
   public float shotSpeed; // 弾の移動の速さ
   public float shotAngleRange; // 複数の弾を発射する時の角度
   public int shotCount; // 弾の発射数
   float CT1 = 0.5f; // クールタイム
   bool Attack1;
   public float angles;
   void Start () {
       
   }
   
   void Update () {
       look = GameObject.Find("look");
       //矢印キーの入力情報を取得する
       horizontal = Input.GetAxis("Horizontal");
       vertical = Input.GetAxis("Vertical");
       //右スティック
       horizontal2 = Input.GetAxis("Horizontal2");
       vertical2 = Input.GetAxis("Vertical2");
       //矢印キーが押されている方向にプレイヤーを移動する
       velocity = new Vector3(horizontal, vertical) * speed;
       transform.localPosition += velocity;
               //矢印の向きを取得
       angles = look.transform.rotation.eulerAngles.z;
       Debug.Log(angles);
```
lookオブジェクトのアニメーション操作のスクリプト  
```C#  
using System.Collections;  
using System.Collections.Generic;  
using UnityEngine;  
 
public class AimController : MonoBehaviour {  
 
   private Animator Aim;  
   private GameObject Player;  
 
   public float h;  
   public float v;  
 
   void Start () {  
       Aim = GetComponent<Animator>();  
   }  
     
   // Update is called once per frame  
   void Update () {  
       Player = GameObject.Find("Player1");  
       gameObject.transform.position = Player.transform.position;  
 
       // 右スティックの入力取得  
       h = Input.GetAxis("Horizontal2");  
       v = Input.GetAxis ("Vertical2");  
         
       //モーション判定用のパラメータ   
       Aim.SetFloat("Direction_x", h);  
       Aim.SetFloat("Direction_y", v);  
   }  
}  
```  
 
 
 
### 補足情報(FW/ツールのバージョンなど)
unity 5.6.3f1
  • Unity2D

    1766 questions

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る