当前位置: 首页 > wzjs >正文

苏州建设公司网站淘宝推广方法有哪些

苏州建设公司网站,淘宝推广方法有哪些,建筑公司网站图片,菠菜建设网站Unity基础-数学向量 二、向量相关用法 概述 向量在Unity游戏开发中扮演着重要角色,用于表示位置、方向、速度等。Unity提供了Vector2、Vector3等结构体来处理向量运算。 1. 向量基础操作 1.1 向量创建和访问 // 创建向量 Vector3 position new Vector3(1, 2,…

Unity基础-数学向量

二、向量相关用法

概述

向量在Unity游戏开发中扮演着重要角色,用于表示位置、方向、速度等。Unity提供了Vector2、Vector3等结构体来处理向量运算。

1. 向量基础操作

1.1 向量创建和访问
// 创建向量
Vector3 position = new Vector3(1, 2, 3);
Vector2 position2D = new Vector2(1, 2);// 访问向量分量
float x = position.x;
float y = position.y;
float z = position.z;
1.2 向量运算
// 向量加减
Vector3 v1 = new Vector3(1, 2, 3);
Vector3 v2 = new Vector3(4, 5, 6);
Vector3 sum = v1 + v2;    // 结果:(5, 7, 9)
Vector3 diff = v2 - v1;   // 结果:(3, 3, 3)// 向量数乘
Vector3 scaled = v1 * 2;  // 结果:(2, 4, 6)

2. 向量重要方法

2.1 向量点乘(Dot Product)
// 点乘用于计算两个向量的夹角
float dot = Vector3.Dot(v1, v2);// 实际应用:判断物体相对位置
// 如果点乘结果 > 0,表示物体在前方
// 如果点乘结果 < 0,表示物体在后方
if(Vector3.Dot(transform.forward, target.position - transform.position) > 0)
{print("目标在前方");
}
2.2 向量叉乘(Cross Product)
// 叉乘用于获取垂直于两个向量的向量
Vector3 cross = Vector3.Cross(v1, v2);// 实际应用:判断左右方向
// 如果叉乘结果的y分量 > 0,表示在右侧
// 如果叉乘结果的y分量 < 0,表示在左侧
if(Vector3.Cross(transform.forward, target.position - transform.position).y > 0)
{print("目标在右侧");
}
2.3 向量夹角计算
// 方法1:使用点乘和反三角函数
float dot = Vector3.Dot(v1.normalized, v2.normalized);
float angle = Mathf.Acos(dot) * Mathf.Rad2Deg;// 方法2:直接使用Vector3.Angle
float angle = Vector3.Angle(v1, v2);

3. 向量插值

3.1 线性插值(Lerp)
// 在两个向量之间进行线性插值
Vector3 result = Vector3.Lerp(start, end, t);  // t的范围是[0,1]
3.2 球形插值(Slerp)
// 在两个向量之间进行球形插值,保持匀速旋转
Vector3 result = Vector3.Slerp(start, end, t);

4. 向量常用属性

Vector3 v = new Vector3(3, 4, 0);// 向量长度
float magnitude = v.magnitude;  // 结果:5// 向量平方长度(性能更好)
float sqrMagnitude = v.sqrMagnitude;  // 结果:25// 单位向量
Vector3 normalized = v.normalized;  // 结果:(0.6, 0.8, 0)// 零向量
Vector3 zero = Vector3.zero;  // 结果:(0, 0, 0)// 单位向量
Vector3 one = Vector3.one;    // 结果:(1, 1, 1)

5. 实际应用示例

5.1 物体跟随
// 使用Vector3.Lerp实现平滑跟随
transform.position = Vector3.Lerp(transform.position, target.position, Time.deltaTime * speed);
5.2 方向检测
// 检测目标是否在视野范围内
Vector3 directionToTarget = target.position - transform.position;
float angle = Vector3.Angle(transform.forward, directionToTarget);
if(angle < viewAngle && directionToTarget.magnitude < viewDistance)
{print("目标在视野范围内");
}
5.3 巡逻检测
// 检测目标是否在特定区域内
if(Vector3.Dot(transform.forward, target.position - transform.position) > 0)
{if(Vector3.Cross(transform.forward, target.position - transform.position).y > 0){if(Vector3.Angle(transform.forward, target.position - transform.position) < 30 &&Vector3.Distance(transform.position, target.position) < 5){print("发现目标");}}
}

6. 调试工具

// 绘制线段
Debug.DrawLine(start, end, Color.red);// 绘制射线
Debug.DrawRay(origin, direction, Color.blue);

7. 使用建议

  1. 性能优化

    • 优先使用sqrMagnitude代替magnitude
    • 避免频繁创建新的Vector3实例
    • 合理使用向量缓存
  2. 精度控制

    • 使用Mathf.Approximately比较浮点数
    • 注意向量运算的精度损失
  3. 常见陷阱

    • 注意向量归一化时的零向量情况
    • 注意叉乘的方向性
    • 注意角度计算的范围限制
http://www.dtcms.com/wzjs/60929.html

相关文章:

  • 免费的求职简历模板网站seo网站内部优化方案
  • 厘米售卡站怎么做网站云巅seo
  • 怎么样购买网站空间友情链接
  • 昆明网站设计能实现什么功能自动app优化
  • html5网站开发工具网页制作接单平台
  • 网站开发公司哪里济南兴田德润实惠吗电商平台怎么运营的
  • 百度网站关键词和网址seo怎样才能优化网站
  • python做网站 框架2023年8月份新冠
  • 便宜手机网站建设个人博客网站怎么做
  • 青岛需要做网站的公司搜索引擎优化效果
  • 洛阳住房和城乡建设厅网站免费做网站
  • 直播网站提供搜索引擎优化公司
  • 网站设计遇到难题产品软文范例100字
  • 做酒店网站设计seo快速优化报价
  • 重庆建设工程质量协会网站谷歌seo搜索引擎优化
  • 和网站建设相关的行业seo的重要性
  • 那个大学业做网站seo搜索引擎优化步骤
  • 中港海通网站是谁做的西安百度搜索排名
  • 天津设计网站建设产品推广计划
  • 韩韩良品只做性价比网站下载商丘seo
  • 专业企业网站建设公司徐州网页关键词优化
  • 做网站的地方福州seo管理
  • 门户网站建设对策及建议中国疾控卫生应急服装
  • 做网站页面过大好影视后期哪个培训靠谱
  • 东莞网站建设纸品包装seo关键词优化外包
  • 深圳罗湖网站制作网站seo 优化
  • 天津做一个简单的网站首页观看b站的广告网站平台
  • 速升网站杭州百度百科
  • pdf 网站建设百度推广登录入口登录
  • 免费平台西安seo网站排名