unity 物体移动方式的一些笔记
来源:互联网 发布:电脑绑定mac地址 编辑:程序博客网 时间:2024/05/22 11:46
项目里遇到车子在场地漫游的需求,因为要模拟真实物理效果,而且场地里会有上下坡,所以我选择了rigidbody.addforce的移动方法。
但是遇到一些问题 查了api之后才发现这个移动方式需要在FixedUpdate而不是Update里调用,否则只是加一个瞬间的力而不是持续的力。所以最后还是选择了直接给rigidbody.velocity赋值的移动方法。
这个移动方法我遇到的问题是,因为场地里有矮的障碍物,车子如果在撞上障碍物之后还继续强行向前移动的话会行进到障碍物上方,最开始想的解决办法是用空气墙阻止车子开上障碍物,但是空气墙做好了之后又发现车子撞到空气墙之后还强行加速的话,车屁股会翘起来,后退撞上障碍物的话车头会翘起来。后来去问了大佬,给的解决方法是在车子行进过程中给一个向下的力压住车子。这个做好以后原来调好的速度数值也不能用了因为向下加力之后车子跟地面的摩擦力太大了,而且PC端合适的数值导到移动端也又不合适了。然后大佬说可以改变材质球的摩擦力,在车子动的时候把材质球设置为0摩擦的,需要停下来的时候设置为高摩擦的。这样加力就对车子速度没影响。同时解决了车头车屁股翘和pc端手机端移动数据一样效果不一样的问题。
改变材质球摩擦力代码如下
private static PhysicMaterial zeroFrictionMaterial; //零摩擦材质 private static PhysicMaterial highFrictionMaterial; //高摩擦材质 void OnEnable() { if (zeroFrictionMaterial == null) { zeroFrictionMaterial = new PhysicMaterial(); zeroFrictionMaterial.dynamicFriction = 0f; zeroFrictionMaterial.staticFriction = 0f; zeroFrictionMaterial.frictionCombine = PhysicMaterialCombine.Minimum; zeroFrictionMaterial.bounciness = 0f; zeroFrictionMaterial.bounceCombine = PhysicMaterialCombine.Minimum; } if (highFrictionMaterial == null) { highFrictionMaterial = new PhysicMaterial(); } }// 物理材质 // 设置碰撞器到高摩擦材质 public void HighFriction() { capsule.GetComponent<MeshCollider>().material = highFrictionMaterial; } // 设置碰撞器为零摩擦材质 public void ZeroFriction() { capsule.GetComponent<MeshCollider>().material = zeroFrictionMaterial; }
阅读全文
0 0
- unity 物体移动方式的一些笔记
- unity中物体移动的几种方式
- Unity-->实现物体的移动
- unity里面物体的移动
- unity学习笔记之物体移动
- 物体的移动方式(转载)
- [基础]物体的移动方式
- unity物体的移动/脚本的添加
- Unity 几个物体移动的方法
- unity的三种物体移动方法
- unity移动物体的方法及区别
- Unity移动物体
- unity 拖动物体移动
- Unity中物体抛物线的实现方式
- Unity中物体抛物线的实现方式
- Unity学习笔记 1st —— 物体会移动就是游戏的开始!
- unity学习笔记(一)键盘控制物体移动
- Unity3D中物体的移动方式
- 第0步:创建文件夹
- java中获取类加载路径和项目根路径的5种方法 复制代码
- Activity
- C++ 进程间共享内存-实现进程同步
- java 字符串MD5的加密和解密
- unity 物体移动方式的一些笔记
- 机器学习决策树算法原理以及用sklearn对决策树算法的应用
- 单例模式
- WPS文字给字体添加纹理效果快速改变输入文字的颜色
- Leetcode||38. Count and Say
- 华为Java机试题
- 充分的准备才是获胜的关键
- vim简单使用教程
- fragment滑动