六一的部落格


关关难过关关过,前路漫漫亦灿灿。




说明

当游戏角色生命值为0,我们尝试剥夺玩家对游戏角色的控制,此时仍能旋转Camera; 左右旋转视角时, Character身体也会旋转

我们可以在游戏角色死亡时,切换玩家控制的Pawn:一方面,彻底剥夺玩家对游戏角色的控制,另一方面,允许玩家做合理的操作


观察视角

  • 对应一个APawn派生类,ASpectatorPawn
  • 关卡的默认类型里,观察者类使用ASpectatorPawn
  • 玩家死亡后,使其操控SpectatorPawn,仍能继续观看游戏

场景中的SpectatorPawn

漂浮的Camera,除了可以前后左右移动,还可以上下移动,亦支持旋转,由鼠标控制


本小节使用默认的观察者类


游戏角色死亡后,切换到观察视角

C++

先前我们已设置STUGameModeBase使用STUPlayerController类。

APawn::Controller和具体的Controller对象动态绑定。由于其声明里使用AController,所以我们包含AController的头文件而非STUPlayerController的。

游戏角色死亡时,切换到观察视角

ShootThemUp: Player/STUBaseCharacter.cpp

1#include "GameFramework/Controller.h"
2
3// OnDeath
4if (Controller)
5{
6    Controller->ChangeState(NAME_Spectating);
7}

查看

虚幻编辑器


查看SpectatorPawn

  1. WorldSetting中,GameMode默认选择SpectatorPawn作为Spectator Class


  2. Pawn也可选择SpectatorPawn



验证观察视角

Character死亡后,世界大纲新增SpectatorPawn1


添加观察视角



说明

当游戏角色生命值为0,我们尝试剥夺玩家对游戏角色的控制,此时仍能旋转Camera; 左右旋转视角时, Character身体也会旋转

我们可以在游戏角色死亡时,切换玩家控制的Pawn:一方面,彻底剥夺玩家对游戏角色的控制,另一方面,允许玩家做合理的操作


观察视角

  • 对应一个APawn派生类,ASpectatorPawn
  • 关卡的默认类型里,观察者类使用ASpectatorPawn
  • 玩家死亡后,使其操控SpectatorPawn,仍能继续观看游戏

场景中的SpectatorPawn

漂浮的Camera,除了可以前后左右移动,还可以上下移动,亦支持旋转,由鼠标控制


本小节使用默认的观察者类


游戏角色死亡后,切换到观察视角

C++

先前我们已设置STUGameModeBase使用STUPlayerController类。

APawn::Controller和具体的Controller对象动态绑定。由于其声明里使用AController,所以我们包含AController的头文件而非STUPlayerController的。

游戏角色死亡时,切换到观察视角

ShootThemUp: Player/STUBaseCharacter.cpp

1#include "GameFramework/Controller.h"
2
3// OnDeath
4if (Controller)
5{
6    Controller->ChangeState(NAME_Spectating);
7}

查看

虚幻编辑器


查看SpectatorPawn

  1. WorldSetting中,GameMode默认选择SpectatorPawn作为Spectator Class


  2. Pawn也可选择SpectatorPawn



验证观察视角

Character死亡后,世界大纲新增SpectatorPawn1