Unity向量的几种运算和作用

本文主要介绍Unity中向量的几种运算和一些作用,主要包括向量的加法和减法,点乘和叉乘。

向量的加减法

假设有两个向量a和b,向量a=(x1,y1),向量b=(x2,y2),那么加减法得出的向量c就为(x1+x2,y1+y2),(x1-x2,y1-y2)。

在Unity中,减法可以用来求方向。假设在游戏中,玩家坐标是a,敌人的坐标是b,这两个坐标是世界坐标。这两个坐标起始就是等于从原点开始的向量,那么把玩家坐标和敌人坐标相减就能得出一个向量,让敌人沿着该向量行走就可以看到敌人向玩家走过去了。

如上图所示,我们创建三个游戏物体,一个player,一个emeny,一个地面plane,(记得添加完了要reset一下)。在enemy上挂载一个WalkTo脚本和一个Character Cintroller组件,WalkTo脚本的内容如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WalkTo : MonoBehaviour
{
    public Vector3 v1;
    public Vector3 v2;
    public Vector3 direction;
    public CharacterController cc;

    private void Awake()
    {
        v1 = GameObject.Find("player").transform.position;
        v2 = this.transform.position;
        cc = GetComponent<CharacterController>();
    }

   
    void Update()
    {
        //这里乘以0.1f让物体移动的慢一些
        direction = (v1 - v2) * 0.1f;
        cc.SimpleMove(direction);
    }
}

 代码的逻辑也很简单,就是用上述向量减法的逻辑和Character Controller的SimpleMove方法让enemy物体向player移动。

向量的点乘

点成就是让向量对应坐标相乘,假设有两个向量a和b,向量a=(x1,y1),向量b=(x2,y2),那么点乘得出的向量c就为(x1x2,y1y2)。

可以通过反余弦求两个向量的夹角。θ=arccos((a·b)/ |a| |b| )。但其他Unity中有一个函数Vector3.Angle(a,b)可以求从a到b之间的夹角,注意返回的是浮点数。

具体有什么别的用处还没遇到。

向量的叉乘

假设有两个向量a和b,向量a=(x1,y1,z1),向量b=(x2,y2,z2),那么叉乘得出的向量c为(y1z2-z1y2,z1x2-x1z2,x1y2-y1x2)。假设p是向量a和向量b组成的一个平面,那么向量c垂直于该平面。

在《糖豆人》中,有些关卡会有一些斜面,玩家碰到这些斜面就会沿着垂直于该斜面的方向弹出去。通过向量的叉乘就可以得到垂直于平面的向量,在向量上施加一个速度,在附加到人物的rigbody上,人物就可以完成一样的效果。

还在补充当中。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值