ユニティ3 Dで攻撃範囲検出を実現


本論文の例では、Unity 3 Dの攻撃範囲検出を実現するための具体的なコードを共有します。
一、扇形攻撃範囲検出

using UnityEngine;
using System.Collections;


public class AttackCHeck : MonoBehaviour
{
 //      
 public Transform Target;
 //                
 private float SkillDistance = 5;
 //              
 private float SkillJiaodu = 60;

 private void Update()
 {
  //      
  float distance = Vector3.Distance(transform.position, Target.position);
  //        
  Vector3 norVec = transform.rotation * Vector3.forward;
  //          
  Vector3 temVec = Target.position - transform.position;
  //        
  float jiajiao = Mathf.Acos(Vector3.Dot(norVec.normalized, temVec.normalized)) * Mathf.Rad2Deg;
  if (distance < SkillDistance)
  {
   if (jiajiao <= SkillJiaodu * 0.5f)
   {
    Debug.Log("      ");
   }
  }
 }
}
二、長方形範囲攻撃測定

using UnityEngine;
using System.Collections;


public class AttackCHeck : MonoBehaviour
{
 //      
 public Transform Target;

 private void Update()
 {
  //          
  float distance = Vector3.Distance(transform.position, Target.position);
  //          
  Vector3 temVec = Target.position - transform.position;
  //         
  float forwardDistance = Vector3.Dot(temVec, transform.forward.normalized);
  if (forwardDistance > 0 && forwardDistance <= 10)
  {
   float rightDistance = Vector3.Dot(temVec, transform.right.normalized);

   if (Mathf.Abs(rightDistance) <= 3)
   {
    Debug.Log("      ");
   }
  }

 }
}
三、半円攻撃範囲検出

using UnityEngine;
using System.Collections;


public class AttackCHeck : MonoBehaviour
{
 //      
 public Transform Target;
 private void Update()
 {
  //          
  float distance = Vector3.Distance(transform.position, Target.position);
  //          
  Vector3 temVec = Target.position - transform.position;
  //         
  float forwardDistance = Vector3.Dot(temVec, transform.forward.normalized);
  if (forwardDistance > 0 && forwardDistance <= 10)
  {
   if (distance <= 5)
   {
    Debug.Log("      ");
   }
  }
 }
}
とりあえず三つだけ書いてください。今は三つの種類があります。後でまた更新します。アルゴリズムの核心知識点を紹介します。
実はこれらの小さいアルゴリズムは基本的にすべてベクトルの計算を使っています。ベクトルの計算には二つの種類があります。
1.ベクトルの点乗
C>A.B=124 A*124*cosθ
C>点乗アプリケーション
1)Aが単位ベクトル124 A 124==1 c点積に等しい場合、BのA上の投影に等しい。
2)A Bを単位ベクトルのarccos(a.b)に等しくすると=角度を挟みます。
2.ベクトルのフォークリフト
C>A*B=CはAとBの法線ベクトルです。
C>チャーシュー応用
1)cは方向があります。左手の法則でCの方向が分かります。
2)だからチャーシューは普通方向を計算するために使います。
3)AとBはいずれも単位ベクトルarcsin(|A*B𞓜)であり、夾角に等しい。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。