ue4 小知识点 character 没有碰撞是移动不了的 (input 按键)

如果character的胶囊体的collision是无碰撞的,那么你按键盘w键是无法走动的,这个小问题耗费了我两天时间,最后不得一行一行的debug源码才找到。从input到角色移动大概流程如下

APawn::AddMovementInput()  改变了ControlInputVector

APawn::Internal_ConsumeMovementInputVector() 用了ControlInputVector

FVector UPawnMovementComponent::ConsumeInputVector()
{
    return PawnOwner ? PawnOwner->Internal_ConsumeMovementInputVector() : FVector::ZeroVector;
}


//在UCharacterMovementComponent::TickComponent()调用了ConsumeInputVector

void UCharacterMovementComponent::TickComponent(.....)
{
    ..........
	const FVector InputVector = ConsumeInputVector();
    ..........
}

//最后走到UCharacterMovementComponent::PerformMovement

UCharacterMovementComponent::PerformMovement(.....)
{

}

UCharacterMovementComponent::StartNewPhysics(....)
{
}

UCharacterMovementComponent::PhysWalking(......)
{
    ........
    //我就栽在这里了,由于之前代码来回改动比较多,什么时候设置的无碰撞,而自己不知道,所        
    //以怎么都不走,郁闷+闷气最后只好一行一行查代码,终于找到你这个臭bug
    if (!UpdatedComponent->IsQueryCollisionEnabled())
	{
		SetMovementMode(MOVE_Walking);
		return;
	}

    //没有return下面的代码就是移动角色了,请自行查看
    ........
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值