Rigidbody钢体移动时抖动问题
Rigidbody移动时抖动问题
撞墙抖动
Unity中物体移动有非常多的方式;
比如:
transform.position += dir*speed*Time.deltaTime;
transform.Translate(pos, Space.World);
但是这种方式与碰撞结合时,是先位移在判断碰撞,会导致撞墙抖动;
而钢体中修改速度,或是添加力,是先判断碰撞在移动,有效解决撞墙抖动问题;
RigidBody rig;
rig.AddForce(dir*speed);
rig.velocity = new Vector3(pos.x, 0, pos.z) * speed * Time.fixedDeltaTime;
众所周知,人物移动时乘以Time.fixedDeltaTime,相当于逻辑在FixedUpade中调用,每个0.02s移动一次;
移动抖动
如果你的摄像机跟随人物移动,一般会将摄像机逻辑写在LateUpdate中处理,保证每一帧的最后调用,有效保护游戏的公平性;
但这样钢体移动和摄像机移动不同步,会导致移动时屏幕不断抖动;
所谓这里的摄像机逻辑建议都写在FixedUpdate周期中;
public class CameraController : MonoBehaviour
{
public Transform hero;
private float distacne = 6.5f;
private float height = 6.3f;
public void FixedUpdate()
{
transform.LookAt(hero);
transform.position = hero.position + new Vector3(distacne,height,0);
}
}
Rigidbody钢体移动时抖动问题的更多相关文章
- p2 钢体
钢体可以控制沿x方向移动,沿y方向移动, 不旋转等. fixedX, fixedY, fixedRotaion 1)addBody和removeBody:World类中的addBody()和remov ...
- C语言中访问结构体成员时用‘.’和‘->’的区别
举个例子,定义了一个叫Student,别名为stu的结构类型,我们声明了一个结构体变量叫stu1,声明了一个结构体指针为stuP. typedef struct Student { char name ...
- C#如何消除绘制图形缩放时抖动,总结
一.手动双缓冲 首先定义一个BitmapBitmap backBuffer = new Bitmap(画布宽度, 画布高度);然后获取这个Bitmap的GraphicsGraphics graphic ...
- unity3d中 刚体(Rigidbody) 碰撞体(Collider) 触发器(Is Trigger)
刚体(Rigidbody)的官方(摘自Unity3d的官方指导书<Unity4.x从入门到精通>)解释如下: Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可 ...
- niceScroll在ie11和edge浏览器上面滚动时抖动问题
niceScroll 是一个很好的jquery插件,相信很多人都用过,我们项目中使用的是3.7.6版本的,一般我们在开发的时候都是使用的火狐或者是谷歌浏览器,使用 niceScroll 没有什么问题, ...
- Android为TV端助力 电影栏目移动到底部或者顶部时抖动动画
1 移动到底部上下抖动ObjectAnimator animatorX = ObjectAnimator.ofFloat(holder.itemView,"translationX" ...
- 禁止layer.msg()回调函数时抖动
layer.msg(resp.msg, { shift: -1, time: 2000 }, function () { window.l ...
- unity3d入门 Demo 学习记录
闲来学习一下 unity3d 的Demo,记录如下. 官方 Demo,名字为 Roll-A-Ball,如图 场景比较简单,包含地面.玩家精灵.主摄像机.墙壁.可拾取的方块.分数为示 text.平行光源 ...
- 【Unity】11.2 刚体(Rigidbody)
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力,使游戏对象像在真实世界中那样 ...
随机推荐
- mysql switch语句
SELECT CASE the_order_status WHEN 4 THEN '待收货' WHEN 5 THEN '已收货' ELSE '其他' END AS statuss ,order_id ...
- MySQL授权认证
• MySQL-权限系统介绍 • 权限系统的作用是授予来自某个主机的某个用户可以查询.插入.修改.删除等数据库操作的权限 • 不能明确的指定拒绝某个用户的连接 • 权限控制(授权与回收)的执行语句包括 ...
- 多个mysql同时运行
一.准备 mysql下载地址 https://dev.mysql.com/downloads/mysql/ 1.下载 2.解压缩 3.创建my.ini [Client] port = 3307 [my ...
- NumPy的基本操作
1 简介 NumPy 是用于处理数组的 python 库,部分用 Python 编写,但是大多数需要快速计算的部分都是用 C 或 C ++ 编写的.它还拥有在线性代数.傅立叶变换和矩阵领域中工作的函数 ...
- Python - 面向对象编程 - 实战(4)
需求:士兵突进 士兵许三多有一把 AK47 士兵可以开火 枪能够发射子弹 枪装填子弹,可以增加子弹数量 需求分析 很明显有两个类:士兵类,枪类 AK47 是枪名,是枪类的属性,每把枪都有子弹数,所以子 ...
- GridView控件使用
增加显示列gridView.Columns.AddVisible("AgentName", "姓名");设置是否为只读gridView1.OptionsBeha ...
- JS005. 拷贝引用数据类型Array使其指向不同堆的解决方案
一个很常见的语法问题,但专注实现需求时经常会忘记去避免,导致最终问题的出现,再花时间排查.为此专门整理一篇解决方法的博客,也加强一下自己的记忆. TAG: JSON.parse() JSON.stri ...
- Spring Boot中有多个@Async异步任务时,记得做好线程池的隔离!
通过上一篇:配置@Async异步任务的线程池的介绍,你应该已经了解到异步任务的执行背后有一个线程池来管理执行任务.为了控制异步任务的并发不影响到应用的正常运作,我们必须要对线程池做好相应的配置,防止资 ...
- vue-cli3 项目中通过 CDN方式 使用 echarts
1.html 中引入 echarts html中添加script标签如下: <script src="//cdn.bootcss.com/echarts ...
- ecshop 加入购物车和直接购买同时存在的方法
一.首先将直接购买的链接设置为 <a href="javascript:bool =1;addToCart({$goods.goods_id})"> bool值为1,g ...