首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >改变特征控制器的高度引起单位抖动问题

改变特征控制器的高度引起单位抖动问题
EN

Game Development用户
提问于 2018-06-14 01:54:21
回答 1查看 1.2K关注 0票数 1

正如标题所说,改变字符控制器的高度会引起抖动问题。

例如,当我降低CharacterController的高度时,似乎CharacterController漂浮在每一个框架上,并且一直落在地上。对立面有同样的问题,不同的是对撞机其实已经通过地面了,所以它只是用物理引擎把物体推上去。

(我看到一些类似的地形问题,在这种情况下更糟,它只是通过地形)

无论如何,有人告诉我,我也必须改变CharacterController的中心,用脚的偏移量(我不知道这到底是什么),所以我试着在调整高度时改变CharacterController的中心,但是它仍然有相同的问题,没有什么不同。

这是我正在使用的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void Update() {
    if(Input.GetKeyDown(KeyCode.LeftControl)) {
        isCrouched = !isCrouched;
    }

    float newHeight = isCrouched ? crouchingHeight : originalHeight;
    controller.height = Mathf.Lerp(controller.height, newHeight, Time.deltaTime * smooth);

    Vector3 newCenter = isCrouched ? new Vector3(0, 0.2f, 0) : Vector3.zero;
    controller.center = Vector3.Lerp(controller.center, newCenter, Time.deltaTime * smooth);

    float newCamPos = isCrouched ? origCamPos.y - 0.2f : origCamPos.y;
    Vector3 newPos = new Vector3(cam.localPosition.x, newCamPos, cam.localPosition.z);

    cam.localPosition = Vector3.Lerp(cam.localPosition, newPos, Time.deltaTime * smooth);
}

有没有办法在改变角色控制器高度的同时消除这个抖动的问题?任何建议都会很感激的。

EN

回答 1

Game Development用户

回答已采纳

发布于 2018-08-14 02:50:59

我想这就是你面临的问题:

您可以通过偏移CharacterController的中心来解决这个问题,这样对撞机的底部总是在您的角色的底部。具体来说,您垂直偏移中心的originalHeight和当前高度之间的差异,除以两。

在您的代码中,替换:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Vector3 newCenter = isCrouched ? new Vector3(0, 0.2f, 0) : Vector3.zero;
controller.center = Vector3.Lerp(controller.center, newCenter, Time.deltaTime * smooth);

通过以下方式:

controller.center = Vector3.down * (originalHeight - controller.height) / 2.0f;

这就是结果:

票数 3
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/159781

复制
相关文章
动态加载子类热更
上一篇《JAVA热更新1:Agent方式热更》我们讲解了JDK提供的Agent方式来实现代码不停服更新, 受限于JDK的Agent一些限制,这种方式无法实现以下功能:只能修改方法体,不能变更方法签名、不能增加和删除方法/类的成员属性。
Qwe7
2022/03/23
4320
CRT改时间
抓log时时间和实时时间不匹配(差5小时),故修改时间 改完后出现一堆log(不管他,ctrl+C退出打印) 将当前时间和日期写入BIOS,避免重启后失效 具体步骤如下: console:/ $date Tue Oct 18 11:23:19 CEST 2022 console:/ $ su console:/ # date 17:23:00 console:/ #hwclock -w su date 17:23:00 hwclock -w
天天Lotay
2022/11/11
1.1K0
CRT改时间
Linux修改时间
查看当前系统时间 date 修改时间 date -s "yyyyMMdd mm:hh:ss" [如果只是修改时分秒,那么可以把年月日省略]
Java架构师必看
2021/09/07
4.7K0
jenkins修改时区
查看jenkins目前的时区 访问http://your-jenkins/systemInfo,查看user.timezone变量的值 默认是纽约时间 修改时区 查https://wiki.jenki
千往
2018/01/24
2.7K0
jenkins修改时区
[Concent小课堂]认识组合api,换个姿势撸更清爽的react
开源不易,感谢你的支持,❤ star me if you like concent ^_^
fantasticsoul
2020/08/16
1.5K0
[Concent小课堂]认识组合api,换个姿势撸更清爽的react
【春节日更】JS延迟加载的几种方式
用途:表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕之后再执行。
用户9914333
2022/07/22
1.9K0
【春节日更】如何判断多图片加载完毕
注:readyState为complete和loaded则表明图片已经加载完毕。测试IE6-IE10支持该事件,其它浏览器不支持。
用户9914333
2022/07/22
9230
Centos系统修改时区
今天在操作系统的时候创建了一个文件,ls了一下发现时间和本地时间不对,date看了一下后发现时区是EDT(Eastern Daylight Timing)指美国东部夏令时间)。时区这玩意,百年难得修改一次,几乎算是最不常用的操作了(除了运维NTP服务器的大神们),记录一下。 [root@dbback ~]# date Mon Mar 27 01:26:48 EDT 2017 一、设置Centos系统的时区 输入命令: tzselect 依次输入:5)Asia → 9)china → 1)eas
行 者
2018/03/26
2.6K0
Centos系统修改时区
centos永久修改时间
修改硬件时间 hwclock --set --date "2019-08-12 10:18:30"
似水的流年
2019/12/07
1.5K0
Linux (RHEL)修改时区
注意: 1)时区一般建议在安装系统时就选择正确,不建议后期更改 2)tzselect可以指导你如何选择正确的时区,但并不会修改时区
Alfred Zhao
2019/05/24
3.5K0
CentOS 7修改时区
在线上环境遇到时间差八小时,怀疑是时区的原因: 然后在linux上运行: date 发现输出的是UTC时间,时间与现在差八个小时 然后通过以下命令去修改时区: ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 然后再次运行date,发现时间为CST时间,即上海时区
院长技术
2021/02/19
7280
CentOS 7 修改时区
Linux 系统(我特指发行版, 没说内核) 下大部分软件的风格就是不会仔细去考虑向后 的兼容性, 比如你上个版本能用这种程序配置, 没准到了下一个版本, 该程序已经不见了. 比如 sysvinit 这种东西.
yaohong
2019/09/11
1.1K0
linux设置和修改时间与时区命令_linux 文件修改时间
时区设置用tzselect 命令来实现。但是通过tzselect命令设置TZ这个环境变量来选择的时区,需要将变量添加到.profile文件中。
全栈程序员站长
2022/11/17
6.4K0
vscode源码分析【八】加载第一个画面
先复习一下! 在第一节中,我们提到: app.ts(src\vs\code\electron-main\app.ts)的openFirstWindow方法中, 有个WindowsMainService
liulun
2019/07/02
9990
React框架-第一个React+Node.js组合实例
通常情况下Web应用的数据都是由存储在服务端的数据库中。前端往往通过基于HTTP的接口来完成数据的增、删、改、查等操作。
Baige
2022/03/22
1.2K0
React框架-第一个React+Node.js组合实例
Ubuntu 系统如何修改时间
在Ubuntu上,你可以使用以下三种方法来修改时间:date命令,timedatectl命令和hwclock命令。
用户8418197
2023/07/02
6.4K0
Linux 修改时区和时间
CentOS 和 Ubuntu 的时区文件是 /etc/localtime , 但是在 CentOS7 以后 localtime 以及变成了一个链接文件 :
全栈程序员站长
2022/07/18
3.7K0
ubuntu18.04修改时区
运行如下命令: sudo tzselect 然后选择亚洲Asia,继续选择中国China,最后选择北京Beijing。 baoguoxiao@bogon:~/windows/lumen$ sudo tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent, ocean, "coord", or "TZ". 1) Africa 2) Americas
魔王卷子
2019/05/31
1.6K0
拖拽,自由组合,让你的开发更加简单,用户更方便
今天给大家推荐一个自由拖拽,自由组合的控件,这个控件是我自定义写的。通过它,我们可以自由拖拽,自由组合实现一个界面,满足一个用户自由组合界面的需求。这里不是通过自由拖拽控件,来快速开发一个界面,而且更人性化的让用户去自由组合一个界面。 1 前言 最近有一个项目,有一个主界面,界面上有很多控件或者有多个 fragment 组成,大小不一,而且由于用户需要,需要自由拖动和自由组合,形成用户自己需要的组合成的模样。所以就写了一个 DragerViewLayout ,只要在 DragerViewLayout 下,写
非著名程序员
2018/02/09
1.1K0
拖拽,自由组合,让你的开发更加简单,用户更方便
点击加载更多

相似问题

通过web钩子发送FulfillmentMessage和FollowupEventInput

13

如何使用动作sdk在web钩子中添加建议芯片

16

捕获对话流建议芯片响应

10

用于显示设备的建议芯片

113

条纹Web钩子响应

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文