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

结合实际提升神马seo关键词自然排名

结合实际,提升神马seo关键词自然排名,临沂网站建设小程序,沂源县建设局网站一、获取刚体组件Rigidbody 当一个物体挂载了刚体时&#xff0c;即可在脚本中获取该物体的刚体组件&#xff0c;代码如下 Rigidbody rigid; void Start() { rigidGetComponent<Rigidbody>(); } 一般将刚体变量命名为rigid并定义为一个字段&#xff0c;方便复用. 二、施…

一、获取刚体组件Rigidbody

当一个物体挂载了刚体时,即可在脚本中获取该物体的刚体组件,代码如下

Rigidbody rigid;

void Start()

{

rigid=GetComponent<Rigidbody>();

}

一般将刚体变量命名为rigid并定义为一个字段,方便复用.

二、施加作用力AddForce

最常用的施加作用力的方法是AddForce(),参数为Vector3类型。代码如下

rigid.AddForce(new Vector3(0,100,0));

上述代码表示对刚体施加一个向上的100N的力。持续时间看具体情况。

三、修改速度velocity

对于物理系统中的刚体来说,速度非常重要。影响着动量、动能,决定着碰撞的结果。

在Unity中获取、修改刚体速度的代码如下

Vector3 vel=rigid.velocity;

rigid.velocity=vel+new Vector3(0,0,1);

下面举一个多段跳跃的例子

usingUnityEngine;

public class SimpleJump:MonoBehaviour

{

  Rigidbody rigid;

  void Start()

  {

    rigid=GetComponent<Rigidbody>();

  }

private void Update()

  {

   if(Input.GetButtonDown("Jump"))

     {

        rigid.AddForce(new Vector3(0,100,0));

     }

  }

}

但实际测试发现,如果角色处于上升阶段时再次跳跃,最大高度就会大于单次跳跃的2倍。如果处于下降阶段,就很难在空中跳起来,可能只会停顿一下,延缓下落时间。完全符合物理规律。

若要实现二段跳,则只需要令其在跳跃时y轴速度为0即可,加上如下代码

rigid.velocity=newVector(rigid.velocity.x,0,rigid.velocity.z);

四、射线的使用方法

射线在游戏中应用非常广泛,举几个例子

  • 游戏中有单击地面的操作,因此要发射射线以确定是否点中了可单🐔区域和单🐓位置的坐标。
  • 在判定子弹或技能是否击中目标时,如果采用碰撞体,需要考虑子弹速度,且存在穿透问题,而射线是没有速度的(瞬时发生),不仅易于使用,且综合效率更高。
  • 在3D或2D游戏中,判断玩家是否落地,可以向玩家脚下发射射线;判断是否接触墙壁,可以往左右两侧发射射线;判断玩家是否低头,可以往头顶发射射线;判断玩家是否需要攀爬,也可以采用射线检测
  • 因为射线与视线一样,会被障碍物阻挡,因此在游戏AI设计中,可以用射线模拟AI角色的视线。

⚠️:上述的各种射线检测都是以物理系统为基础的。射线需要雨碰撞体和触发器配合才能发挥作用。

下面来介绍一下射线编程方法。

常用的直线型射线用类型Ray表示。Ray包含了origin(起点)和direction(方向)的定义,起点和方向都用Vector3表示。

有很多方法可以在游戏事件中发射一条射线,最常用的方法是Physics.Raycast()和Physics.RaycastAll()。

Physics.Raycast()有十种以上重载方式,列出以下三种重载形式:

bool Raycast(Vector3 origin,Vector3 direction);

bool Raycast(Vector3 origin,Vector3 direction,float maxDistance);

bool Raycast(Vector3 origin,Vector3 direction,float maxDistance,int layMask);

以上三个函数共同的参数都是发射点坐标和方向向量,返回值都是是否击中了某个碰撞体或触发器。第三个参数是射线的最大指定长度

除了指定方向和位置的射线以外,以下还有一类很常用的重载形式:

bool Raycast(Ray ray,out RaycastHit hitInfo);

bool Raycast(Ray ray,out RaycastHit hitInfo,float maxDistance);

bool Raycast(Ray ray,out RaycastHit hitInfo,float maxDistance,int layerMask);

这种形式的射线检测用了一种常用结构体Ray(射线),它只是将射线数据对象先单独创建出来,并没有实际区别

Ray对象有多种创建方法,举例如下:

Ray ray=new Ray(Vector3.zero,Vector3.up);

 

Vector2 mousePos=Input.mousePosition;

Ray ray2=Camera.main.ScreenPointToRay(mousePos);

 

physics.Raycast(ray,10000,LayMask.GetMask("Default"));

五、层和层遮罩

很多时候,需要射线仅被某些物体阻挡,例如希望检测地面的射线只检测地面,而不检测其他东西。这就要用到Layer和Layer Mask(层遮罩)了。

"层"的概念让物理系统变得更好用。如一颗子弹,仅让它碰到Ground、Player和Obstacle这三个层,代码如下

int mask=LayerMask.GetMask("Ground","Player","Obstacle");

if(Physics.Raycast(transform.position,Vector3.forward,mask))

{

//碰到了物体

}

如果让mask表示这三层以外的所有层,则只用令mask=~mask即可。

有时需要改变物体所在的层,如将一个物体设置在Default层上,代码如下

gameObject.layer=LayerMask.NameToLayer("Default");

可以通过LayerMask.NameToLayer()将层名转化为整数表示的层,也可以用函数LayerMask.LayerToName()表示层的整数转化为层名字。

http://www.mnyf.cn/news/681.html

相关文章:

  • 节日的网站怎么做模板网站哪个好
  • 惠民网站建设免费软文推广平台都有哪些
  • 网站建设开发ppt免费域名解析
  • 厦门市建设工程造价网seo是怎么优化上去
  • 网站备案主体负责人竞价广告点击软件
  • 相亲网站拉人做基金百度推广免费
  • 广州网站开发 英诺科技爱战网关键词工具
  • 国内做的比较大的外贸电商网站百度allin 人工智能
  • 烟台哪个公司做网站好搜索引擎调词平台
  • 网上购物流程企业网站排名优化
  • 如何用域名做邮箱 网站广州aso优化公司 有限公司
  • 扶余市建设局网站海阳seo排名
  • 商务网站建设实训报告什么是网络营销推广
  • 石家庄 网站建设打广告推广怎么做
  • 微网站制作价格友情链接可以随便找链接加吗
  • 做网站前端设计需要哪些证书网络营销的十大特点
  • 汶川县建设局网站新手销售怎么和客户交流
  • 做婚恋网站怎么样网站营销推广
  • 写网站建设的论文网站搭建费用
  • 做生产计划类的网站网络营销策划方案怎么写
  • 网站 公司肇庆疫情最新情况
  • 网站建设公司哪个好点免费seo网站优化
  • 网站建设中网页模板中国搜索引擎大全
  • 成都网站建设 创新互联东莞营销外包公司
  • 惠州网站建设效果营销策略主要包括哪些
  • wordpress 获取url参数系统优化的例子
  • 南头专业英文网站建设公司企业网络推广计划书
  • 开发网站实时监控网站免费客服系统
  • 30岁学网站开发营销推广策划方案范文
  • 做网站用哪几个端口 比较好世界杯大数据