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

搜狗网站提交区域名查询

搜狗网站提交,区域名查询,盐城中瑞做网站公司,写出网站建设步骤unity3d入门教程四 10.1坐标与旋转10.2物体的运动10.3#xff08;练习#xff09;掉头飞行11.1向量11.2向量间运算11.3向量夹角11.4物体的指向11.5#xff08;练习#xff09;飞向目标12.1屏幕坐标12.2屏幕的边界 10.1坐标与旋转 比如#xff0c;节点的坐标用 Vector3 类型… unity3d入门教程四 10.1坐标与旋转10.2物体的运动10.3练习掉头飞行11.1向量11.2向量间运算11.3向量夹角11.4物体的指向11.5练习飞向目标12.1屏幕坐标12.2屏幕的边界 10.1坐标与旋转 比如节点的坐标用 Vector3 类型表示 transform.position new Vector3(0, 1.0f, 0);比如 transform.position new Vector3(0, 1.0f, 0);transform.eulerAngles new Vector3(0, 0, 90f);给子弹指定本地坐标 transform.localPosition new Vector3( 0, 1.0f, 0);飞机发射子弹认为其有相对的运动关系 本地坐标也是相对坐标相对于父节点的坐标并不是世界坐标即相对于整个场景的坐标 相对旋转如下所示 结论通过 transform.eulerAngles new Vector3(x,y,z)设置的角度是绝对角度(类似于绝对路径) 结论通过 transform.localEulerAngles new Vector3(0f,agent,0f);设置的角度是相对角度(类似于相对路径) 10.2物体的运动 Update()刷新时调用 10.3练习掉头飞行 示例代码 也可以在项目源码的 Assets \ Script \ 目录下查看 public class MyJet : MonoBehaviour {private bool upward true; // 飞行的方向// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update() { //整个camera总高度10飞机在中间上走5个格就到边界了 //如果到达上边界就换向if(upward transform.position.y 5 ){upward false;transform.localEulerAngles new Vector3(0, 0, 180);} //若到达下边界就换向if(!upward transform.position.y -5){upward true;transform.localEulerAngles new Vector3(0, 0, 0);}float step 1.6f * Time.deltaTime; // 每帧移动的距离transform.Translate(0, step, 0, Space.Self );} }11.1向量 运动计算基础向量运算 控制物体运动方向要通过向量运算计算得到 直接使用 API 求长度: float len v.magnitude;其中V是自定义的向量 1 向量的长度 Vector3 a new Vector3(2f, 2f, 0); float len a.magnitude; Debug.Log(长度: len); 注意C# 里的‘属性’其实内部是一个 Getter/ Setter 方法。 2 向量标准化 Vector3 a new Vector3(2f, 2f, 0);Vector3 b a.normalized;Debug.Log(标准化为: b.ToString(F3) );Debug.Log(标准化为: b );如果直接打印显示不全 几个常用的标准向量 (静态常量) Vector3.right 即 Vector3 (1, 0, 0) Vector3.up 即 Vector3 (0, 1, 0) Vector3.forward 即 Vector3 (0, 0, 1)11.2向量间运算 两个向量间的运算 减法是经常用到的用来求两者之间的距离 乘法分为3种 标量乘法 b a * 2 xyz分别成2相当于变长变短 点积 c Vector3.Dot ( a, b ) 差积 c Vector3.Cross ( a, b ) 本示例代码挂载到飞机上飞机和球物体都是根节点下的节点 示例代码 GameObject target GameObject.Find(球);// 目标位置 Vector3 p2 target.transform.position;// 自己位置 Vector3 p1 this.transform.position;// 方向向量 Vector3 direction p2 - p1;Debug.Log(物体间的距离: direction.magnitude);11.3向量夹角 示例: 求从 a 到 b 的夹角 Vector3 a new Vector3(2, 2, 0); Vector3 b new Vector3(-1, 3, 0); float angle Vector3.SignedAngle(a, b, Vector3.forward);要注意此处求得是带正负号的夹角 若只求夹角不含方向即正负号如下 float angle Vector3.Angle(a, b);求从a到b 的夹角 Vector3 a new Vector3(2, 2, 0);Vector3 b new Vector3(-1, 3, 0);// float angle Vector3.Angle(a, b); //只求夹角无方向正负float angle Vector3.SignedAngle(a, b, Vector3.forward); //有正负求从b到a的夹角 float angle Vector3.SignedAngle(b, a, Vector3.forward);求从a与 x轴正向的夹角 float angle Vector3.SignedAngle(a, Vector3.right, Vector3.forward);//a到x轴正向逆时针-45度其中Vector3.right 就是指向X轴正方向的单位向量 11.4物体的指向 注意物体的坐标向量和世界坐标向量是不同的 1 打印显示物体的3个坐标轴向量 Debug.Log(x轴向量: transform.right.ToString(F3)); Debug.Log(Y轴向量: transform.up.ToString(F3)); Debug.Log(z轴向量: transform.forward.ToString(F3));这三个向量都是标准向量代表物体的三个坐标轴的方向 代码挂载到飞机节点上 2 旋转机头指机头指向目标物体 // 确定脸的朝向 ( 在本例中Y轴方向即为脸的朝向) Vector3 face this.transform.up;// 方向向量 ( 飞机 小球 ) GameObject target GameObject.Find(球); Vector3 direction target.transform.position - this.transform.position;// 机头要旋转的角度 float angle Vector3.SignedAngle(face, direction, Vector3.forward);// 旋转 this.transform.Rotate(0, 0, angle);11.5练习飞向目标 private bool upward true; // 飞行的方向void Start(){// 确定脸的朝向 ( 在本例中Y轴方向即为脸的朝向)Vector3 face this.transform.up;// 方向向量 ( 飞机 小球 )GameObject target GameObject.Find(球);Vector3 direction target.transform.position - this.transform.position;// 机头要旋转的角度float angle Vector3.SignedAngle(face, direction, Vector3.forward);// 旋转this.transform.Rotate(0, 0, angle);}// Update is called once per framevoid Update(){//if (upward transform.position.y 5)//{// upward false;// transform.localEulerAngles new Vector3(0, 0, 180);//}若到达下边界就换向//if (!upward transform.position.y -5)//{// upward true;// transform.localEulerAngles new Vector3(0, 0, 0);//}float step 1.6f * Time.deltaTime; // 每帧移动的距离transform.Translate(0, step, 0, Space.Self);}12.1屏幕坐标 如何获取一个物体的屏幕坐标 Vector3 pos transform.position; Vector3 screenPos Camera.main.WorldToScreenPoint(worldPos);#获取主摄像机将世界坐标转换成窗口屏幕运行生成的窗口的屏幕中的坐标世界坐标系一屏幕中间点为原点 而屏幕坐标系以窗口屏幕左下角为原点 屏幕坐标是以像素为单位的 示例代码 public class MyJet : MonoBehaviour {// Start is called before the first frame updatevoid Start(){int screenW Screen.width;int screenH Screen.height;Debug.Log(屏幕: screenW , screenH);// 世界坐标: UnitVector3 worldPos transform.position; // 屏幕坐标像素Vector3 screenPos Camera.main.WorldToScreenPoint(worldPos);// 注意屏幕坐标的单位是像素Debug.Log(世界坐标: worldPos);Debug.Log(屏幕坐标: screenPos);}// Update is called once per framevoid Update(){} }12.2屏幕的边界 上下界限可确定但左右需要通过长宽比得到 运行后 public class test12 : MonoBehaviour {private bool toRight true;//换向标志// Start is called before the first frame updatevoid Start(){//当前节点对象绕z轴顺时针旋转90度transform.eulerAngles new Vector3(0, 0, -90);}// Update is called once per framevoid Update(){//将当前对象世界坐标转换成屏幕坐标Vector3 sp Camera.main.WorldToScreenPoint(transform.position);if (toRight sp.x Screen.width){toRight false;transform.eulerAngles new Vector3(0, 0, 90);}if (toRight sp.x 0){toRight true;transform.eulerAngles new Vector3(0, 0, -90);}float step 1.8f * Time.deltaTime;//注意机头指向沿着自己的Y轴指向前进transform.Translate(0, step, 0, Space.Self);} }
http://www.dnsts.com.cn/news/8999.html

相关文章:

  • 免费电子版个人简历可编辑成都seo优化外包公司
  • wordpress做网站教程wordpress 手机图片主题
  • 网站建设需要知道什么揭阳专业做网站
  • 成都html5网站建设免费网络电话免费30分钟
  • 杭州企业宣传画册制作公司株洲正规竞价优化推荐
  • 潍坊网站建设报价费用华星建设集团网站
  • 站长工具seo推广秒收录wordpress商城付款
  • 网站设计与网页配色实例精讲pdf用wordpress做博客
  • 购物网站建设精英wordpress新建php页面模板
  • 郯城县网站建设网站建设公司排行
  • 墙绘网站建设泰安房产交易信息网
  • wordpress 获取侧边栏仙桃网站优化
  • 做一些购物网站帮别人设计网站的网站吗
  • 山东网站营销seo哪家好哈尔滨网络推广经理招聘
  • 中卫网架配件多少钱江苏关键词推广seo
  • 网站开发公司名字网站设计步骤
  • 蓬莱做网站案例室内设计图片
  • 有域名了 怎么做网站唐山制作网站公司
  • 咸宁网站设计无人机东莞网站建设
  • 西部数码网站备份面备案网站建设
  • 微信怎么建设网站培训机构加盟店排行榜
  • 天津网站模板建站17zwd一起做网站官网
  • 如何免费建立自己的网站政务网站建设浙江
  • 北京网站开发培训杭州网站建设网站制作
  • 网站成立查询网页设计代码计算器
  • 做网站哪一家比较好移动开发是干什么的
  • 做网站 写文章怎样加视频wordpress 10万并发
  • 学做美食去哪个网站好网站需要什么
  • 好大夫 网站开发手机网站源码 html5
  • 网站设计与建设实践变装小说wordpress