unity学习笔记-charactercontroller组件使用需要注意的事项

charactercontroller组件使用需要注意的事项

charactercontroller组件使用需要注意的事项

问题

当使用charactercontroller组件对模型进行碰撞设置的时候,同时如果需要通过虚拟摇杆控制模型的移动
原先代码如图

direction = jsMovement.InputDirection; //InputDirection can be used as per the need of your project
              if (direction.magnitude != 0)
              {
                transform.position = transform.position + direction * moveSpeed;
              }

这个代码的大致意思是实时监控虚拟摇杆的vector3对象的变化,当它有所变化的时候就能监控到并对模型的transform进行修改,从而达到控制模型移动的效果
进过测试在win的unity编辑器窗口里运行时没有任何问题的
但是
一旦打包安卓(其他平台的目前还没有试过),就会出现不管怎么移动摇杆,模型都还是杵在原地无法移动

解决办法

这里我多说几句解决办法的历程
一开始不知道是什么原因,觉得可能是虚拟摇杆的脚本出现了问题,于是反复看了看,发现应该没什么问题,于是开始研究是不是在过程中我修改了什么才导致的这个问题,但是因为过程我修改了太多,所以不知道怎么排查,中间试过修改shader,但是感觉这两个应该没有什么直接的关系,然后又试了试其他的,发现这样效率很低,百度也搜了很多资料,但没有一个是和我一样遇到类似问题的(可能是我搜索的方式不对?)最后问题是最晚暴露的,今天下午才解决,将近一天的时间发现可能是transform的问题,于是疯狂的在画布上实时监控模型transform的数据,发现果然是这个的问题,不论怎么移动虚拟摇杆,模型的transform的值一直处于初始的状态
那么发现是这个问题后要怎么解决呢,讲道理,解决办法也是一个问题,因为不知道为什么在编辑器里能修改的transform值到了安卓上就不能修改了,这里面涉及到太多的可能
但是,我在偶然的情况下,把charactercontroller组件取消掉了,发现,安卓上的模型的transform值就能修改了?!
但是这样是治标不治本的办法,因为这样会让模型穿模,体验会很差,想着要不换个碰撞机制,但是时间又来不及重新研究了,所以开始搜charactercontroller组件的方法,想看看里面有没有方法可以使用,里面的move和simplemove都试过了,发现在安卓上是可以移动的,但是移动的数值和之前的比差太多了,动不动就会移动到屏幕外直接报错(其实这里的时候我的思路就对了,但是因为报错让我直接选择了逃避)好家伙这里也能悟出点人生道理?!后面想着如果是transform的问题,就想怎么修改他能让安卓识别不就好了吗,但是这个方法不管怎么尝试,结果都是一样的,所以后面回过头来,发现可能是charactercontroller组件在真机上使用的时候不会识别到transform的值,或者换句话说就是他不对transform的数值有所反应,这样的话才能解释为什么无论我怎么变换transform他都充耳不闻的样子
于是我回到charactercontroller组件自带的两个方法,只要能正确修改这两个方法的数值,模型就能正常移动了吧
抱着这么试试的心态我修改了一下代码

if (direction.magnitude != 0)
              {
                //transform.position = transform.position + direction * moveSpeed;
                character.Move(direction * moveSpeed);
              }

没错,是的,你没看错,就是这么简单的一句代码,就能实现困扰了我一天的问题
当时就流眼泪了,捂着眼说婷婷
不管怎么样,解决了就行
太难了,这也给了很多感触,有时候头铁自己研究真的太顶了,很多问题都像如期而至一样
也告诉我遇到报错不要第一时间就排除掉所用的办法,有时候可能是自己的打开方式不对~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值