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

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

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

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

Q&A

0回答

1145閲覧

[Unity3D] 戦車の砲台を回転速度を付けて回転させたい。

退会済みユーザー

退会済みユーザー

総合スコア0

Unity3D

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

0グッド

0クリップ

投稿2021/08/09 04:54

提示コードのコメント部内部ですが戦車の砲台を"Turret1"を回転速度をつけて回転させたいのですが回転が止まりません。これはなぜでしょうか?内積を使って砲台と前方向とプレイヤーの方向を取得してそれを内積することによって角度を得てるのですがなぜなのでしょうか?

イメージ説明

cs

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.AI; 5 6public class Tank_Tier1 : Enemy_Base 7{ 8 9 [SerializeField] private Transform[] point; //巡回地点 10 [SerializeField] private GameObject bullet; //発射する弾 11 [SerializeField] private GameObject destroyEffect; //破壊エフェクト 12 13 private Vector3 attackVector; //攻撃方向 14 private NavMeshAgent agent; //巡回 15 private int destPoint; //巡回ポイント 16 private float angle; //角度 17 private bool isRotateTrurret; //砲台を回転するかどうか? 18 private float rotate; //回転量 19 20 21 private void Awake() 22 { 23 24 } 25 26 // Start is called before the first frame update 27 void Start() 28 { 29 destPoint = 0; 30 angle = 0; 31 agent = GetComponent<NavMeshAgent>(); 32 //agent.SetDestination(point[destPoint].position); 33 34 } 35 36 // Update is called once per frame 37 void Update() 38 { 39 40 41 //AI(); 42 43 if(time <= intervalTime) 44 { 45 time += Time.deltaTime; 46 } 47 else 48 { 49 time = intervalTime; 50 } 51 } 52 53 private void FixedUpdate() 54 { 55 56 57 58 } 59 60 61 void AI() 62 { 63 if (agent.remainingDistance < 0.1f) 64 { 65 agent.destination = point[destPoint].position; 66 destPoint = (destPoint + 1) % point.Length; 67 } 68 } 69///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 70 public override void OnAttackAreaStay(Collider other) 71 { 72 if(other.gameObject.tag == "Player") 73 { 74 attackVector = other.gameObject.transform.position - transform.Find("Turret1").transform.Find("Main Gun1").transform.position; 75 76 rotate = Vector3.Dot(transform.Find("Turret1").transform.forward,other.gameObject.transform.position - transform.Find("Turret1").transform.position); 77 78 79 if((rotate * Mathf.Rad2Deg) > angle) 80 { 81 Debug.Log("あああ"); 82 transform.Find("Turret1").rotation = Quaternion.Euler(0f, angle, 0f); 83// transform.Find("Turret1").transform.Find("Main Gun1").transform.rotation = Quaternion.Euler(0f, angle, 0f); 84 85 angle += 10 * Time.deltaTime; 86 } 87 else 88 { 89 transform.Find("Turret1").rotation = Quaternion.LookRotation(other.gameObject.transform.position - transform.Find("Turret1").transform.position); 90 91 //angle = 0; 92 } 93 94///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 95 96 97 98 99 100 101 102 103 /* 104 //バレット 105 if(time >= intervalTime || time == 0) 106 { 107 GameObject g = Instantiate(bullet, transform.Find("Turret1").transform.Find("Main Gun1").transform.position, 108 transform.Find("Turret1").transform.Find("Main Gun1").transform.rotation); 109 g.gameObject.GetComponent<Bullet>().moveVector = attackVector; 110 111 time = 0; 112 } 113 */ 114 } 115 116 117 } 118 119 120 public override void OnAttackAreaExit(Collider other) 121 { 122 if (other.gameObject.tag == "Player") 123 { 124 125 } 126 } 127 128 129 //ダメージ 130 public override void OnDamage(Collider other) 131 { 132 if(other.gameObject.tag == "Weapon") 133 { 134 //hp += other.gameObject.GetComponent<Bullet>().damage 135 hp += -1; 136 if (hp < 1) 137 { 138 Instantiate(destroyEffect,transform.position,transform.rotation); 139 Destroy(this.gameObject); 140 } 141 } 142 } 143 144 145 146 147} 148

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問