成都网站建设设计

将想法与焦点和您一起共享

Unity3D场景漫游以及碰撞防止反弹-创新互联

这两天一直在做一个漫游的东西,漫游的代码,网上各种各样,都有,但是在漫游的过程中出现一个问题,那就是碰到墙壁之后会穿墙,或者是会反弹,摄像机一直在抖动,这样看起来很不爽,

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网站空间、营销软件、网站建设、汝州网站维护、网站推广。

漫游的程序就不多少了,有好多,我这用了两种:

 1.采用滑动的偏移量来控制移动,这包括三种,

   第一一种是鼠标的Input.GetMouseButtonDown(0)和Input.GetMouseButton(0)计算偏移量;

   第二种就是使用虚拟轴

    float offetX = Input.GetAxis("Mouse X");//左右滑动

    float offetY = Input.GetAxis("Mouse Y");//上下滑动

   来控制移动和旋转;

   第三种,采用就是移动平台下的手指滑动,这个也有好多,也可以用

FingerGestures插件;

   这个可以看一看宣雨松的博客,讲的很详细,http://www.xuanyusong.com/archives/1869

   也可以用Input.GetTouch(0)手指滑动;

 总之一句话就是用的偏差量来控制移动和旋转;

 2.防止摄像机穿墙:

  相碰的两个物体都要添加Collider,运动的那个物体定要加刚体(给摄像机加一个Capsule子对象,将Collider和Rigidbody加载Capsule的父对象身上),但是防止穿墙就得靠Rigidbody组件的Constraints属性了,分别有Freeze Position(x,y,z)和Freeze Rotation(x,y,z);固定位置和角度,Freeze Rotation(x,y,z)勾上哪一个轴,碰撞之后不超哪一个轴旋转,Freeze Position(x,y,z)控制位置,防止穿墙,x和z轴不能勾,这样碰撞之后就不会穿墙。

 3.防止碰撞反弹

  这个也不是很难,就是想不到这个问题出在哪,你看了之后就会明白,其实作为刚体,gameObject运动之后,rigidbody.velocity的值是不为Vector(0,0,0),作为刚体,碰撞后本来就会反弹,因而会一直在动,朝着反弹的方向,所以很闹心,但是我们可以将rigidbody.velocity归0,没有速度了就不会反弹了,因为是物理特性的,所以不要写在Update中,

 void FixedUpdate()

 {

  this.GetComponent().rigidbody.velocity = new Vector3(0, 0, 0);

 }

这就完美的解决了,如果有问题,提出来我们继续讨论

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:Unity3D场景漫游以及碰撞防止反弹-创新互联
文章分享:http://chengdu.cdxwcx.cn/article/csehij.html