移动组件到指定坐标_UE4下关于角色移动的一些思考

由于关于移动的代码量太过庞大,所以我们先抛开引擎或者说抛开移动组件来思考几个问题。

问题:抛开MovementComponent这些个移动组件,如果让我们自己写角色移动,应该怎么构思?

1、UMovementComponent

首先我们可以从移动的本质开始思考,移动就是改变位置信息,那么就是在一个循环中一直更新一个位置信息,所以体育老师教的公式S=vt用到了

紧接着思考另一个问题:移动的对象肯定是角色,但是角色Actor是没有位置信息的,所以驱动移动的是什么呢,是包含位置信息的组件对吧,例如:SceneComponent;

所以通过以上分析我们大致可以理出来一点思路,就是移动本质就是调用一个类似名称这样的SetComponentLocation函数。

所以我们可以开始写了,比如写UMovementComponent一个这样的组件然后继承与UActorComponent,

class ENGINE_API UMovementComponent : public UActorComponent

为什么继承与UActorComponent而不是其他呢 ,因为我没必要有其他任何的类似于位置信息或者渲染信息之类的需求呀,我只需要做好自己的计算移动驱动移动就好了,那为什么没有直接继承自UObject 呢,因为我还需要同步的一些功能呀哈哈。

那么UMovementComponent的一个重要变量就是USceneComponent* UpdatedComponent了,

USceneComponent* UpdatedComponent;

接上文提到SetActorLocation就是模拟移动,所以查看代码可以知道SetActorLocation里面肯定有我们需要的函数

2273331a8cdc8bbca405c1ab87e6468d.png
MoveComponent

所以我们这个组件里面也应该有如下函数MoveUpdatedComponentImpl

c97071d2e06374a503b47e42072b953d.png
是不是把SetActorLocation换了个名字而已

而且该函数的第一个参数很重要 De

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值