unity3d htc vr射线射线怎么可以在game中看到

这里是一个简单的跳跃,5.0和其他版本貌似不一样,并且,再起跳功能做的不完全。
不过一个基本的思路在这里。
1.首先,射线检测,这里是利用一个空对象,放到主角对象的下面
2.然后调节射线的位置,在主角对象的下面一点(这点很重要,差不多放在脚下,这样才能和地面接触,不然就永远也和地面接触不了)
LineCast 两点之间产生射线,去和某个碰撞器发生碰撞,触发了碰撞器,返回一个真
先定义要碰撞的碰撞器的层
然后,在绑定主角的脚本文件上开始写脚本:
using UnityE
using System.C
public class move : MonoBehaviour {
// Use this for initialization
private bool grounded =
private bool jump = //角色的跳起
private Rigidbody2D
public float jumpy = 360f;
public AudioC //跳跃音频
void Start () {
groundcheck = transform.Find ("groundcheck");
//hero = transform.Find ("pk_0");
// Update is called once per frame
void Update () {
if(Input.GetKey(KeyCode.W)){
gameObject.transform.Translate(Vector3.up*5*Time.deltaTime);
if(Input.GetKey(KeyCode.S)){
gameObject.transform.Translate(Vector3.down*5*Time.deltaTime);
if(Input.GetKey(KeyCode.A)){
gameObject.transform.Translate(Vector3.left*5*Time.deltaTime);
if(Input.GetKey(KeyCode.D)){
gameObject.transform.Translate(Vector3.right*5*Time.deltaTime);
//与地面接触为真,太能够进行跳跃
grounded = Physics2D.Linecast (transform.position, groundcheck.transform.position,1 && LayerMask.NameToLayer("Ground"));
if(grounded && Input.GetKeyDown(KeyCode.J)){
//设置角色的起跳功能
if(jump == true){
AudioSource.PlayClipAtPoint(jumpclips,gameObject.transform.position);
gameObject.GetComponent&Rigidbody2D&().AddForce(new Vector2(0f,jumpy));
//hero.AddForce(new Vector2(0f,1000f));
grounded =
Debug.DrawLine (transform.position, groundcheck.transform.position,Color.red,1f);
阅读(...) 评论()unity3d中的物体,在Scene窗口中可以看到,而在Game窗口中看不到的原因
时间: 23:21:26
&&&& 阅读:1782
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&unity3d中的物体,在Scene窗口中可以看到,而在Game窗口中看不到的原因:多半是因为物体所属Layer与照相机的culling mask不一致导致的,或者超出照相机的可视范围。如果游戏中有多个相机,每个相机都有自己的可视范围和culling mask,物体在移动的过程中,进入不同的相机,其可见性可能是变化的,取决与物体所属Layer与当前相机是否一致标签:&&&&&&&&&
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!后使用快捷导航没有帐号?
 论坛入口:
  |   |    |   | 
unity3d干货分享:实现敌人锥形视角的3个方法
Unity3D/2D&
QQ截图53.png (809.11 KB, 下载次数: 3)
16:39 上传
  GameRes游资网授权发布 文 / wolf96
  有时候会特别想要实现像盟军敢死队那样的锥形视角效果:
1.png (436.19 KB, 下载次数: 3)
16:37 上传
  我试了几种方法可以得到类似的效果:
  1.Raycast方法
2.png (58.75 KB, 下载次数: 3)
16:37 上传
3.png (58.11 KB, 下载次数: 3)
16:37 上传
4.png (39.86 KB, 下载次数: 3)
16:37 上传
  从人物位置向前透射射线,再Debug.DrawLine。但只能画出射线,没有锥面效果。
  Debug.DrawLine要在OnDrawGizmos()事件中实现。
  2.Spotlight方法
5.png (56.2 KB, 下载次数: 3)
16:37 上传
6.png (52.09 KB, 下载次数: 3)
16:37 上传
  最简单方法,Spotlight聚光灯置于水平,放在地面上方,想投射的东西如地面,就新建layer设成Spotlight culling mask中开启,避免不必要的光照。
  3.投影法
  最作弊的方法,在人物上方放一个锥形object,博主在此偷懒,用的plane,放在相机看不到的地方(无限调高),在新加一个方向光,垂直方向,layer设置同上,想改变阴影颜色可以自己写shader。
7.png (42.9 KB, 下载次数: 3)
16:37 上传
8.png (41.6 KB, 下载次数: 3)
16:37 上传
  相关阅读:
关注我们官方微信公众号
下载我们官方APP-游戏行
关注手游动态微信公众号
用得很巧。。但太水了
何必这么麻烦,直接用Mesh 画出来不就完事了?╮(╯_╰)╭
《王者荣耀》技术总监:技术架构与同步方案竞技游戏全面网游化的今天,你还记得当年的知名战队资不抵债 OMG拟转让36%股权阿里巴巴文化娱乐集团宣布成立游戏事业群手游买量市场要被玩坏了,“传奇”抢走了70%9月25日—10月1日共有52款游戏开测|GameRe
微信扫一扫关注我们→Unity3D开发物理射线之打砖块案例[上](十三) - 简书
Unity3D开发物理射线之打砖块案例[上](十三)
1.射线打砖块案例
1.功能需求
使用物理射线,实现打砖块游戏案例:
①在场景中使用嵌套循环生成一堵墙壁;
②摄像机发射射线,鼠标点击屏幕,就往鼠标点击的方向发射子弹;
③子弹与墙壁碰撞,发生物理碰撞事件。
2.使用嵌套循环生成一堵墙壁
使用两层 for 循环,实例化生成 Cube,组成一堵墙壁。
墙壁需要和子弹发生碰撞效果,所有 Cube 要加上刚体组件。
3.射线碰撞检测发射子弹
RaycastHit.point
获取射线碰撞点。
Vector3 向量计算方向:
向量 A - 向量 B = 一个从 B 点到 A 点的方向。
也就是说,终点减去起点,可以获取到一个从起点到终点的方向。
public class RayDemo : MonoBehaviour {
//定义一堵墙
//声明墙的宽度 和 高度
private int x = 10; //墙壁的宽度
private int y = 5;//墙壁的高度
//在摄像机中创建一个公开的游戏对象的属性,用来存放 砖块 预置体的;
public GameObject prefabB
//将预置体 砖块拖曳到此属性中;
//定义一个ray类型,接收发出去的射线;
//定义一个射线碰撞存贮信息的变量类型
private RaycastH
//再定义一个公开的游戏对象属性 用来存贮实例化子弹信息用的
public GameObject prefabB
//获取摄像机的位置,就是为了生成子弹的位置做准备的
private Transform m_T
//实例化子弹类型
private GameO
void Start () {
////for循环嵌套生成墙壁 ,因为实例化时涉及到位置,必须用x,y来表示
//for (int i = -8; i & i+=2)
for (int j = 0; j & j++)
//实例化砖块
GameObject.Instantiate(prefabBrick,new Vector3(i,j,0),Quaternion.identity);//参数1:预置体 参数2:位置信息 参数3:旋转类型(枚举)
////综上。可以生成墙壁,封装成一个方法来调用;
CreateWall();
//摄像机位置 赋值
为发射子弹而用的
m_Transform = gameObject.GetComponent&Transform&();
void Update () {
//// 利用鼠标按键 去检测碰撞游戏对象生成子弹
//if (Input.GetMouseButton(0))
//按下鼠标左键 将生成的射线保存起来 注意是利用摄像机的为起始点生成的 参数是:输入的鼠标位置;
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//判断检测到的话 生成子弹
if (Physics.Raycast(ray, out hit))
//实例化子弹
//注意子弹的位置就是摄像机的起始位置;
// GameObject.Instantiate(prefabBullet,m_Transform.position,Quaternion.identity);
//实例化子弹后必须接收它
go = GameObject.Instantiate(prefabBullet, m_Transform.position, Quaternion.identity) as GameO //把类型强转
//获取鼠标点击后射线的碰撞点
//怎么获取发射子弹的力的方向呢?
//关键语句: 利用射线的碰撞点位置
减 当前的摄像机的位置 类型是3维的
Vector3 dir = hit.point - m_Transform.
//计算方向
//向量A-向量B=一个从B点到A点的方向 终点 减 起点 可以获得从起点到终点的方向
//发射子弹
//获取y游戏对象子弹下刚体组件 加力的方法 AddF 利用第二种重载方法 就是力的方向,力的类型
go.GetComponent&Rigidbody&().AddForce(dir * 20,ForceMode.Impulse);
//测试完成后 将发射子弹封装成一个方法;
BulletSend();
/// &summary&
/// 生成墙壁的方法 嵌套for循环
/// &/summary&
void CreateWall() {
for (int i = -8; i & i+=2)
for (int j = 0; j & j++)
GameObject.Instantiate(prefabBrick,new Vector3(i,j,2),Quaternion.identity);
/// &summary&
/// 发射子弹的方法;
/// &/summary&
void BulletSend() {
if (Input.GetMouseButton(0))
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray,out hit))
go=GameObject.Instantiate(prefabBullet,m_Transform.position,Quaternion.identity) as GameO
Vector3 dir = hit.point - m_Transform.
go.GetComponent&Rigidbody&().AddForce(dir*10,ForceMode.Impulse);
向量计算方向.png
Unity API.png
一个无聊的人,经常做些无聊的事儿,撸代码,喂马,劈柴,周游世界......更喜欢看妹子~哈哈哈...AR/VR技术交流群:求助大神,刚刚上手Unity3D,射线不知道什么原因没有绘制【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:76,593贴子:
求助大神,刚刚上手Unity3D,射线不知道什么原因没有绘制收藏
想让射线绘制出来,但是调试了很久就是没有显示。scene和game视图都没出现传说中的射线脚本挂载在摄像机上
达内unity3d培训全程&实战教学&,unity3d金牌讲师授课.免费unity3d课程试听中!到达内unity3d学院学习unity3d,只需4个月速成unity3d游戏工程师.
射线是看不见的,Scene和Game都看不到。不过,你可以用Gizmos辅助查看
你这段代码只是在你鼠标位置下发射一条虚拟射线,记录射线碰到的物体,并返回其名字而且这个Ray是看不见的,如果想有个能看见的射线,或者激光,需要用linerendere组件
用debug.drawline()。觀察時將scene與game兩視窗並列顯示,才能與game中操作,於scene中觀察。
登录百度帐号推荐应用}

我要回帖

更多关于 unity3d 射线检测 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信