UE4C++(10):制作第一人称射击游戏

10/15/2020

添加日志消息

if (GEngine)
{
   
   // 显示调试信息五秒。 
   // -1"键"值(首个参数)说明我们无需更新或刷新此消息。
   GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello World, this is FPSGameMode!"));
}
  • 建议别放在Tick函数中
  • 最好用在StartPlay或者BeginPlay函数里面
  • GEngine表示游戏引擎,继承于UObject

游戏模式(AGameModeBase)

定义游戏规则:

  • 玩家加入游戏的条件,比如初级场,高级场等等
  • 游戏暂停和关卡过渡
  • 获胜条件
  • 等等游戏特定的行为

Default Game Mode Base
默认的游戏模式最主要的是分配Classes专栏

  • 游戏状态
  • 玩家控制器
  • HUD 界面
  • 默认玩家属性和行为
  • 等等

角色类(Pawn)

UE4 Chracter
ACharacter

  • Character表示双足站立的人物
  • 创建C++类FPSCharacter
  • 设置轴映射,即按键操作,WASD表示移动,鼠标左键开火,空格跳跃
  • 实现角色移动函数并绑定到移动组件
// 调用后将功能绑定到输入
void AFPSCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent)
{
   
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    // 设置"移动"绑定。
    PlayerInputComponent->BindAxis("MoveForward", this, &AFPSCharacter::MoveForward);
    PlayerInputComponent->BindAxis("MoveRight", this, &AFPSCharacter::MoveRight);
}

InputComponent 是定义如何处理输入数据的组件。InputComponent 可附加到需要接收输入的 actor。
BindAxis 和BindAction 绑定了一个委托函数到项目设置中定义的行为或者轴

为什么使用C++还要使用蓝图

因为蓝图可以可视化操作,C++加载一个模型后,并不能直接看到模型的样子,最重要的是模型的初始位置和朝向的调整是很难确定的,同时摄像机的视图也需要仔细调整!

注意事项!

当你对C++的某些Component的属性进行重写的时候,它并不会更新已经生成的蓝图类,比如加入你已经拥有了一个FPSCharacter的蓝图类,现在C++想要隐藏骨骼模型

GetMesh()->SetOwnerNoSee(true);
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值