前提・実現したいこと
Unityでプレイヤーがキャラクターの正面の扇状に入った場合に、
キャラクターの首がプレイヤーの方を向くスクリプトを作っています。
https://gomafrontier.com/unity/1772
を参考にし、
該当のソースコード
C#
1protected virtual void LateUpdate() 2{ 3 //■動かすボーンと対象が存在する。 4 if (neckBone != null) { 5 if (watchTarget != null) { 6 //対象との距離が一定以下である 7 if(Vector3.Distance (transform.position, watchTarget.transform.position) < 1.5f ){ 8 9 //対象が正面にいる。 10 //? 11 12 //対象を取得し角度計算(横軸) 13 Vector2 target_pos = new Vector2(watchTarget.transform.position.x, watchTarget.transform.position.z); 14 Vector2 char_pos = new Vector2(transform.position.x, transform.position.z); 15 Vector2 direction = target_pos - char_pos; 16 float angle = -(Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg) - 90f; 17 18 //対象を取得し角度計算(縦軸) 19 //対象との距離 20 float distance = Vector3.Distance (transform.position, watchTarget.transform.position); 21 //自分の高さ-対象の高さ=高度差 22 float altitude = transform.position.y - watchTarget.transform.position.y; 23 //サイン = 高低差 / 距離 *ラジアン角を角度に 24 float angletate = Mathf.Sin(altitude / distance) * Mathf.Rad2Deg; 25 26 //親ボーンや姿勢に関係なく、独立して角度をとる。 27 neckBone.rotation = Quaternion.identity; 28 //首の角度の直接入力 29 neckBone.Rotate(angletate - 0f, angle - 180f, -0f); 30 } 31 } 32 } 33} 34
と書いてみましたが、横軸はプレイヤーを追従するものの、縦軸はプレイヤーを追いかけてくれず、
また、正面の扇状にプレイヤーがいるかの判定もどう取得するか分からないため、真後ろにも首が回ってしまう状態です。
縦軸の角度取得および正面判定方法について
ご助言いただけるとありがたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/17 15:14
2020/02/17 15:27 編集
2020/02/18 15:42
2020/02/19 02:54 編集
2020/02/20 08:46