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

唐山网站制作案例优化方案

唐山网站制作案例,优化方案,wordpress预留邮箱,广告片制作目录 射线一些准备工作编写代码 突然发现好像没有写过关于射线的内容,我就说怎么总感觉好像少了什么东西(心虚 那就在这里写一下关于射线的内容吧,将在这里实现射线检测鼠标点击的功能 射线 射线是一种在Unity中检测碰撞器或触发器的方法&am…

目录

  • 射线
  • 一些准备工作
  • 编写代码

突然发现好像没有写过关于射线的内容,我就说怎么总感觉好像少了什么东西(心虚
那就在这里写一下关于射线的内容吧,将在这里实现射线检测鼠标点击的功能

射线

射线是一种在Unity中检测碰撞器或触发器的方法,可以用来实现一些交互效果,如鼠标点击物体,射击游戏,射线跟踪等。射线需要有一个起点和一个方向,可以通过代码创建或者使用Camera.main.ScreenPointToRay方法从摄像机发出。射线检测的结果可以通过RaycastHit结构体获取,包括碰撞点,碰撞物体,碰撞法线等信息。射线检测还可以指定检测的层级,距离,角度等参数,以提高性能和精度

碰撞检测可以帮助我们实现诸如抵达某个地点自动触发剧情、判断子弹是否击中玩家等功能,但我如果想要实现如当鼠标悬浮某个人物上,自动弹出该人物信息,要如何判断呢?这时使用碰撞检测,从摄像机生成一个透明碰撞体朝着人物移动,等碰撞到了人物再弹出该人物信息?会不会太繁琐了。或许你又会想,若我直接生成一个足够长的透明碰撞体呢,是不是在创建的那一刻就可以触发该人物的弹出信息逻辑?没错这样的确可以,而这就是射线!不过是把无限长的透明碰撞体变为了无限长的一条线,仅此而已

一些准备工作

新建一个物体(或者对象?反正就是类似的东西),使得摄像机也就是MainCamera能看到它,也能是我们能够触摸到它,毕竟我们需要一个可以看到的物体来发射射线以达到我们想要的结果,给这个物体添加刚体组件(不然怎么进行碰撞检测?)
在这里插入图片描述

编写代码

private void learnRay()
{if (Input.GetMouseButtonDown(0)){//创建一道射线Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//检测射线if (Physics.Raycast(ray,out RaycastHit hitInfo)){//hitInfo.transform.Translate(transform.up * 10);//Debug.Log(hitInfo.transform.name);//rb.AddForce(transform.up * 500);//Debug.Log(hitInfo.transform.name);//Debug.Log(hitInfo.point);//hitInfo.point;   //射线撞击点GameObject shell = Instantiate(Sphere,transform.position+transform.right*offset,transform.rotation);shell.GetComponent<Rigidbody>().velocity = Vector3.Normalize(hitInfo.point - transform.position) * 20;// 计算小球的动量//Vector3 ballMomentum = shell.GetComponent<Rigidbody>().velocity * shell.GetComponent<Rigidbody>().mass;// 给物体施加一个与小球相反方向的同等大小的力,抵消小球的反作用力//rb.AddForce(-ballMomentum, ForceMode.Impulse);}}
}

碰撞检测也不能少

//碰撞检测的方法
private void OnCollisionEnter(Collision collision)//碰撞发生时
{//Destroy(collision.transform.gameObject);Debug.Log("刚碰到");
}
private void OnCollisionExit(Collision collision)//碰撞结束时
{Debug.Log("碰完了");
}
private void OnCollisionStay(Collision collision)//正在碰撞时
{Debug.Log("");
}
private void OnTriggerEnter(Collider other)
{Debug.Log("进来");
}
private void OnTriggerStay(Collider other)
{//Debug.Log("other.transform.name");//rb.AddForce(transform.up * 50);rb.AddForce(transform.up*10);}
private void OnTriggerExit(Collider other)
{Debug.Log("run");
}

当然,在这个脚本中,采用的方法是预先准备一个预制体,也就是代码中的“Sphere”,所以同时需要预先准备一个预制体,无所谓是什么,但是要和代码中相对应,否则会出现一些不可预料的问题

挂载脚本后运行

在这里插入图片描述
每当鼠标点击的时候就会触发射线,对预制体进行复制来发射一个小球

http://www.wangmingla.cn/news/8446.html

相关文章:

  • wordpress可以做博客么seo是什么意思
  • 巩义做网站优化百度公司总部在哪里
  • 做众筹网站怎么赚钱正能量网站地址链接免费
  • 外包加工原因seo在线优化平台
  • 网站建设汇报广州网站推广运营
  • 怎么看网站是不是做竞价打开百度一下搜索
  • 护肤品网站建设环境分析网站推广内容
  • dreamwave 做网站电商运营推广是做什么的
  • 南昌网站建设kaiu互动营销案例都有哪些
  • wordpress主题dooplay百度seo关键词优化推荐
  • 富连网网站开发企业建站平台
  • 做网站成本互联网登录的网站名
  • 微网站可以自己做吗ip反查域名网站
  • 网站开发流程心得体会世界十大搜索引擎排名
  • 新品发布会的流程搜索引擎优化的方法与技巧
  • 重庆模板建站软件电商网店
  • 百家联盟推广部电话多少seo基础知识培训
  • 杭州做网站haomae自己怎么创建网站
  • 医学关键词 是哪个网站做临沂seo
  • wordpress点击分类目录404seo优化服务
  • 单位网站设计流程步骤seo视频教学网站
  • 房地产中介网站自学seo大概需要多久
  • wordpress调用最新评论关键词的分类和优化
  • 移动网站 模板今天最新新闻摘抄
  • 运城做网站sem推广软件选哪家
  • 做eso哪家网站好全网关键词搜索
  • 寻花问柳专注做一家男人喜欢的网站东莞营销网站建设优化
  • wordpress防止采集插件seo销售好做吗
  • ludou wordpressseoul是哪个国家
  • 国外活动策划网站百家号优化