1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
Vector3 Vertical = new Vector3(0, 100, 0);//垂直向上的向量
Vector3 EnemytoMe = MyselfPosition - thisEnemyPosition;//Enemy和自机连线,指向自机的向量
Vector3 LHorizontal = Vector3.Cross(Vertical, EnemytoMe);// 垂直于Vc与Vertical向量所组成的面的,且指向<-左侧的小向量<- Enemy
Vector3 RHorizontal = Vector3.Cross(EnemytoMe, Vertical);// 垂直于Vc与Vertical向量所组成的面的,且指向->右侧的小向量Enemy ->
//此时RHorizontal,LHorizontal的长度巨几把长,需要下面操作标准化为1/2Enemy宽度
float standaedization = (float)thisEnemyWidth / Vector3.Distance(thisEnemyPosition, RHorizontal);//计算需要缩小的比例
RHorizontal *= standaedization;//应用缩小比例,标准化完成
LHorizontal *= standaedization;//应用缩小比例,标准化完成
Vector3 LMetoEnemy = LHorizontal - EnemytoMe;//自机与左侧边界连线Me<- Enemy
Vector3 RMetoEnemy = RHorizontal - EnemytoMe;//自机与右侧边界连线Enemy ->Me
Vector3 L0toEnemy = LHorizontal + thisEnemyPosition;// Enemy左侧绝对坐标
Vector3 R0toEnemy = RHorizontal + thisEnemyPosition;// Enemy右侧绝对坐标
float LMetoEnemyDist = Vector3.Distance(MyselfPosition, L0toEnemy);
float RMetoEnemyDist = Vector3.Distance(MyselfPosition, R0toEnemy);
Vector3 LEnemyInView = agentCam.WorldToViewportPoint(L0toEnemy);//Enemy左侧于视角中位置
Vector3 REnemyInView = agentCam.WorldToViewportPoint(R0toEnemy);//Enemy右侧于视角中位置
//Debug连线,颜色遵循飞机航行灯基本使用规则,左红右绿尾翼白。
//Debug.DrawRay(thisEnemyPosition, EnemytoMe, Color.white);//Enemy和自机连线,指向自机的向量
//Debug.DrawRay(thisEnemyPosition, Vertical, Color.white);//垂直向上的向量
//Debug.DrawRay(thisEnemyPosition, LHorizontal, Color.red);// 垂直于Vc与Vertical向量所组成的面的,且指向<-左侧的小向量<- Enemy
//Debug.DrawRay(thisEnemyPosition, RHorizontal, Color.green);// 垂直于Vc与Vertical向量所组成的面的,且指向->右侧的小向量Enemy ->
//Debug.DrawRay(MyselfPosition, LMetoEnemy, Color.red);//自机与左侧边界连线<- Enemy
//Debug.DrawRay(MyselfPosition, RMetoEnemy, Color.green);//自机与右侧边界连线Enemy ->
//Debug.Log("EnemyObj" + EnemyIndex + "Position:" + thisEnemyPosition);
//左侧于可见范围内--<--<--<--<--<--<--<--<--<--<--<--<--<--<
if (LEnemyInView.x >= (thisEnemyWidth - attentionRange / 2) && LEnemyInView.x <= (thisEnemyWidth + attentionRange / 2) && LEnemyInView.z >0)
{
//...
}
|