六一的部落格


行百里者半九十




说明

当游戏角色生命值为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