角色移动组件相关类图 玩家输入最终调用到了UPawnMovementComponent::AddInputVector函数。 根据input输入计算加速度,根据移动模式计算速度, 根据速度和时间计算出位置, 最后设置组件位置,此为移输入控制移动的本质。 移动状态处理 UCharacterMovementComponent,常用的模式有行走、游泳、下落、飞行、AI、 自定义 Walking 行走...
然后我们打开AddInputVector,发现依旧是Pawn组件UPawnMovementComponent的方法。 如果是PawnOwner,然后会调用Internal_AddMovementInput这个方法,然后这个方法就是AddMovementInput的else下面的方法。我们打开这个方法,条件就是如果是bForce是true,就会把传进来的worldAccel给我们的controlInputVector。而且重要的事bForce可以避免Is...
FVector DesiredMovementThisFrame = ConsumeInputVector().GetClampedToMaxSize(1.0f) * DeltaTime * 150.0f; if (!DesiredMovementThisFrame.IsNearlyZero()) { FHitResult Hit; SafeMoveUpdatedComponent(DesiredMovementThisFrame, UpdatedComponent->GetComponentRotation(), true, Hit); // If we bumped into some...
OurMovementComponent->AddInputVector(GetActorForwardVector()*AxisValue); } } void ACollidingPawn::MoveRight(float AxisValue) { if(OurMovementComponent&&(OurMovementComponent->UpdatedComponent==RootComponent)) { OurMovementComponent->AddInputVector(GetActorRightVector()*AxisValue); } } void AColliding...
voidUPawnMovementComponent::AddInputVector(FVector WorldAccel,bool bForce/*=false*/){if(PawnOwner){PawnOwner->Internal_AddMovementInput(WorldAccel,bForce);}} voidAPawn::Internal_AddMovementInput(FVector WorldAccel,bool bForce/*=false*/){if(bForce||!IsMoveInputIgnored()){ControlInputVector+=World...
OurMovementComponent->AddInputVector(GetActorForwardVector() * AxisValue); } } void ACollidingPawn::MoveRight(float AxisValue) {if(OurMovementComponent && (OurMovementComponent->UpdatedComponent == RootComponent)) { OurMovementComponent->AddInputVector(GetActorRightVector() * AxisValue); ...
voidAPawn::AddMovementInput(FVector WorldDirection,floatScaleValue,boolbForce/*=false*/){UPawnMovementComponent*MovementComponent=GetMovementComponent();if(MovementComponent){MovementComponent->AddInputVector(WorldDirection*ScaleValue,bForce);}else{Internal_AddMovementInput(WorldDirection*ScaleValue,bForce);}...
示例:对 0.2 和 0.4 执行 Add(加)的结果是 0.6;对 (0.2,-0.4,0.6) 和 (0.1,0.5,1.0) 执行 Add(加)的结果是 (0.3,0.1,1.6);对 (0.2 11、,-0.4,0.6) 和 1.0 执行 Add(加)的结果是 (1.2,0.6,1.6)用法示例:Add(加)通常用来使颜色变亮/变暗,或者使 UV 纹理坐标偏移。AppendVector(追加矢量)...
make vector:三个值创建向量 vector lenth:向量长度 branch:条件分支 add move input:获取move的输入到一个pawn上 get control:获取控制器,用控制器来控制旋转 set control rotation:设置控制旋转,目标是控制器 2.设置材质 create dynamic material instance:创建动态材质实例 ...