美文网首页
向量减法,点乘在unity中的运用——主角对正面小怪的攻击判断

向量减法,点乘在unity中的运用——主角对正面小怪的攻击判断

作者: AntCodex | 来源:发表于2019-01-18 18:48 被阅读0次

在开始之前,我们要了解一下向量减法与点乘的概念。

向量减法:如果第一个向量表示点的位置,那么向量减法可以用来表示一个对象从一个位置到另一个位置的方向距离,或者计算一个对象与另一个对象之间额距离和相对方位。

image

向量的点乘:一般用于判断两个向量的夹角

image

在unity中已经集成好了点乘方法dot()所以直接用就好。

思路:

1.将enemy放到一个数组,计算敌我距离

2.使用向量减法计算Player与敌人的方向

3.使用TransformDirection()方法将Player正前方朝向(Vector3.forward)的相对坐标转换成世界坐标

4.使用dot计算出player与enemy的方向夹角

代码如下:

        Collider [] arrColliders = Physics.OverlapSphere(this.transform.position, attackArea,1<<LayerMask.NameToLayer("Enemy"));
        Debug.Log("Demage+" + arrColliders.Length);
        foreach (var enemyItem in arrColliders)
        {
            //敌我距离
            float distance = Vector3.Distance(enemyItem.transform.position ,this.transform.position);
            //
            if (isDirection)
            {
                //Player方向与敌人之间
                Vector3 dir = (enemyItem.transform.position - transform.position).normalized;
                //Player朝向
                Vector3 forward = transform.TransformDirection(Vector3.forward); ;
                //player与enemy的夹角
                float angle = Vector3.Dot(dir,forward);
                if (distance<attackArea&&angle>0)
                {
                    //攻击伤害事件
                    Debug.Log(angle+" "+distance);
                    enemyItem.GetComponent().DecreaseHP(damageValue);
                    //Debug.Log("Demage2+" + arrColliders.Length);

                }
            }

            else
            {
                if (distance<attackArea)
                {
                    //攻击伤害事件
                    Debug.Log("Find Enemy2");
                }
            }

相关文章

  • 向量减法,点乘在unity中的运用——主角对正面小怪的攻击判断

    在开始之前,我们要了解一下向量减法与点乘的概念。 向量减法:如果第一个向量表示点的位置,那么向量减法可以用来表示一...

  • [Unity游戏开发]向量在游戏开发中的应用(三)

    在上一篇博客中讲了利用向量点乘在游戏开发中应用的几种情景。本篇博客将用一个简单的小例子来讲解在实际的游戏开发中如何...

  • unity-向量的加减

    向量标准化(归一化) 向量标准化,就是向量除以本身的模长。 向量减法 向量的减法,可以用来计算两点之间的距离和相对...

  • 向量基本操作

    向量加法:c = a + b 向量减法:c = a - b 距离(a,b)= 向量点乘 a.b = a1b1 +...

  • 2019-07-14

    unity vector3.angle的实现 是用一个向量到另一个向量的点乘 在0-1之间 对 点乘进行反余弦 这...

  • Unity 数学

    Unity3D中, Vector3.Dot 表示求两个向量的点积; Vector3.Cross 表示求两个向量的叉...

  • Unity3d数学基础之向量

    这只是基础的一些数学知识,后面会为大家整理一些,unity中如何使用向量,向量在unity中的各种算法及其运算法则...

  • 游戏后期总结2019-06-19

    策划组: 美术组: 主角 古神 怪攻击动画 斧头攻击动画 血条 * 特效已完成待测试 程序组: 攻击机制 ...

  • Unity中的向量(vector)

    理论部分 1. 概念 向量(vector):既有大小(magnitude )又有方向(direction)的量叫做...

  • 点成叉乘 Unity

    在Unity3D中,Vector3.Dot表示求两个向量的点积;Vector3.Cross表示求两个向量的叉积。 ...

网友评论

      本文标题:向量减法,点乘在unity中的运用——主角对正面小怪的攻击判断

      本文链接:https://www.haomeiwen.com/subject/aaqodqtx.html