unity3dunity刚体碰撞不反弹体如何有效测试?

> 问题详情
Unity3d中物体发生碰撞的必要条件是什么?
悬赏:0&答案豆
提问人:匿名网友
发布时间:
Unity3d中物体发生碰撞的必要条件是什么?
我有更好的答案
论文写作技巧
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……在unity3d中,对于碰撞的检测,如果是使用characterController,可以对碰撞的方向通过CollisionFlags进行判断,如果是一般的boxCollider,如何实现类似的效果?如果是自己实现,我的想法是对碰撞的contacts或者所碰撞对象的transform进行判断,各位有什么建议么
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
在这里有相关的知识,/?u=,可以了解一下,希望可以帮到你
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (4807) 次温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
游戏编程博客欢迎大家关注。我对生活充满激情和热爱,现在从事游戏编程行业,希望做一款自己满意的游戏!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1378)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'unity3d带碰撞检测的摄像机',
blogAbstract:'类似网游那样如果摄像机和目标之间有其他物体存在,就移动摄像机到障碍物前面 \r\n// CamController\r\n// 带碰撞第三人称摄像机\r\n//Edit by Shadou\r\n//编写 傻逗\r\n//\r\n//create at \r\n//last change \r\n//\r\n//Any bugs and suggestions please e-mail to
or visit my blog\r\n//\r\n',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:3,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'游戏编程博客欢迎大家关注。我对生活充满激情和热爱,现在从事游戏编程行业,希望做一款自己满意的游戏!',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}29310人阅读
Unity3D(7)
碰撞器由来
1.系统默认会给每个对象(GameObject)添加一个碰撞组件(ColliderComponent),一些背景对象则可以取消该组件。
2.在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。这两种方式的应用非常广泛。为了完整的了解这两种方式,我们必须理解以下概念:
(一)碰撞器是一群组件,它包含了很多种类,比如:Box Collider,Capsule Collider等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
(二)所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
(三)在Unity3d中,主要有以下接口函数来处理这两种碰撞检测:
触发信息检测:
1.MonoBehaviour.OnTriggerEnter( Collider other )当进入触发器
2.MonoBehaviour.OnTriggerExit( Collider other )当退出触发器
3.MonoBehaviour.OnTriggerStay( Collider other )当逗留触发器
碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 当进入碰撞器
2.MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay( Collision collisionInfo ) &当逗留碰撞器
碰撞使用场景
1.给主角添加刚体(Rigidbody)组件,并且取消刚体组件的重力选项UseGravity。
2.主角碰到一些物体后会有一系列反应。举例,完雷电游戏时,飞机可以获取一些加速球、能量球,碰到这些球体,飞机自身属性会有所提高
下图:蓝色球为“加速球”,红色球为能量球,的当飞机接触球体时,属性就会增加
主角的脚本代码如下:
using UnityE
using System.C
public class Hero : MonoBehaviour {
private float move_v = 0;//纵向移动距离
private float move_h = 0;//横向移动距离
public float m_speed = 1.5f;//移动速度
public float m_power = 1.0f;//飞机的威力能量
private Transform m_
void Start () {
m_transform = this.
void Update () {
//飞机与物体发生碰撞,需要判断碰撞体是什么类型
void OnTriggerEnter(Collider e)
if (e.pareTo(&tagSpeedBall&)==0)
Debug.Log(&捡到加速球&);
m_speed += 5;//速度+2
Destroy(e.gameObject);//销毁加速球
if (e.pareTo(&tagPowerBall&) == 0)
Debug.Log(&捡到能量球&);
m_power += 2;//威力+2
Destroy(e.gameObject);//销毁能量球
//移动方法
void Move()
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
//移动距离
m_transform.Translate(-Vector3.forward * Time.deltaTime * m_speed);
if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
m_transform.Translate(Vector3.forward * Time.deltaTime * m_speed);
if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
m_transform.Translate(Vector3.right * Time.deltaTime * m_speed);
if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
m_transform.Translate(Vector3.left * Time.deltaTime * m_speed);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:203775次
积分:2466
积分:2466
排名:第10959名
原创:63篇
转载:16篇
评论:10条
(1)(1)(1)(2)(2)(1)(1)(1)(1)(1)(2)(3)(3)(8)(14)(3)(1)(2)(1)(1)(2)(5)(2)(4)(2)(1)(1)(1)(3)(5)(3)

我要回帖

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

 

随机推荐