初学Unity的第一个坑 CharacterController的Move和SimpleMove

这几天一直加班,回来也只是看看视频,都没心情整理资料了。。

=============================================================

好,先把第一个坑写上来

一开始边看视频边照着写代码,结果没注意看,在角色移动的代码上把SimpleMove写成了Move,爬坡以后由于视角问题并没有发现角色悬空了,只是看到角色可以穿透一些比较矮的围栏。 (花了2个小时在网上找资料,自己写重力代码。。。此处省略500字)后来才发现是没有重力效果,再反复查看视频才发现代码写错了。

那么SimpleMove和Move到底有什么区别呢?

先看看官方解释

SimpleMove

Moves the character with speed.

Velocity along the y-axis is ignored. Speed is in meters/s. Gravity is automatically applied. Returns if the character is grounded. It is recommended that you make only one call to Move or SimpleMove per frame.

=============================================================

Move

A more complex move function taking absolute movement deltas.

Attempts to move the controller by motion, the motion will only be constrained by collisions. It will slide along colliders. CollisionFlags is the summary of collisions that occurred during the Move. This function does not apply any gravity.

看不懂没关系,我们有Google翻译!!

SimpleMove

以速度移动角色。

沿y轴的速度被忽略。 速度以米/秒为单位。 重力是自动应用的。 如果角色接地,则返回。 建议您只对每帧的Move或SimpleMove进行一次调用。

==============================================================

Move

一个更复杂的移动功能,绝对移动三角洲。

试图通过运动来移动控制器,运动只会受到碰撞的限制。 它会沿着对撞机滑动。 CollisionFlags是移动过程中发生的碰撞概要。 此功能不适用于任何重力。

直接看字面意思可以得到:

SimpleMove

1、SimpleMove不受Y轴速度影响,只有X轴和Z轴方向的有效,且自带重力效果。

2、SimpleMove有返回值(BOOL类型),角色接触地面则返回true,否则返回false。

Move

1、Move可以理解为对一个角色的绝对控制,意思就是在XYZ轴上都不给值的时候,角色不管在什么位置都会静止不动,唯一会影响移动的就是各种障碍物的刚体碰撞,他会沿着刚体滑动,所以说这个是没有自带重力效果的。

2、Move方法有返回值(CollisionFlags对象),可以返回一些角色与任何物体碰撞的信息。


看到这里,这个坑应该算是填上啦!

所以说各位跟我一样的初学的朋友们,看视频要仔细咯!!

=============================================================

另外在填坑的过程中产生了一些疑问也记录一下吧~

上面有提到我自己查资料,自己写重力代码,发现一个问题,网上很多兄弟都是用以角色为起点,放出一条垂直向下的,突出角色的,突出长度为0.1的射线(这里也把我坑惨了,射线起点是在角色的中心,也就是一个半径为1的球形角色,要发出一条突出角色且突出长度为0.1的射线,则射线的长度应该是1.1),那么问题来了,射线是垂直向下的,角色又是一个球体,那么在不规则的地形中,球在爬坡时,射线会射不到地面



但是角色是可以在这个地形上停留的,也就是说,角色应该是已经落地了

但是由于射线并没有被挡住,那么就会一直在执行向下的降落的代码,由于我写的重力代码是有重力加速度的,也就是下落速度是变化的,那么这样就会造成下落速度不清零。

我想出来的解决办法是

1、如果能获取到球与地面碰撞的相对于球的位置,那么用球中心向该碰撞点的方向发射一条射线x。

2、获取到角色的爬坡角度,也就是可以在多大的角度上停留。

3、创建一条垂直向下的射线y,计算射线x和射线y的夹角,大于爬坡角度的话角色还会继续下落,反之则角色可以停留在该地形上,则判断已经落地了。

这是我想的解决办法,但是水平不够,暂时还是没办法写出代码来。


===============================================================

以上就是我遇到的问题啦,如果有小伙伴们发现上面有任何错误,请您给我留个言,我会尽快修正,免得误人子弟,谢谢。

关于最后的问题,有大神懂的也请帮帮忙,发个代码上来,大家互相学习!!谢谢啦!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容