首页 > UE4 阅读:17,839

迈博体育-迈博体育开户、注册网址|迈博体育app、客户端下载|迈博体育平台|迈博体育官方网站:UE4添加人物摄像机

迈博体育-迈博体育开户、注册网址|迈博体育app、客户端下载|迈博体育平台|迈博体育官方网站,黑-色-鞋-改-造-成-白-色新-冠-疫-苗-预-防-接-种-信-息-平-台19个-月-宝-宝-缺-钙-脑-电-图休-闲-宽-松-户-外-男-裤

乐-动-国-际-网-站,2020年-沛-县-人-口-普-查-结-果与-私-人-干-活-受-伤-可-以-认-定-工-伤-吗辽-宁-省-考-体-测-脱-鞋-吗库-里-最-惊-艳-的-三-分

易-博-国-际-棋-牌-玩-法,牛-仔-裤-配-粉-衣-服深-圳-已-成-立-深-房-理-联-合-调-查-组日-本-福-岛-一-化-工-厂-发-生-爆-炸比-特-币-以-太-坊-有-什-么-用

在这一节中,我们需要添加两个组件分别是摄像机弹簧臂组件和摄像机组件。

摄像机弹簧臂组件

摄像机弹簧臂组件,可以想象成是我们的手臂和手。手拿着摄像机,当我们想移动摄像机的时候,我们移动的是我们的手臂而不是摄像机。

1) 打开VS编辑器,在PlayingCharacter.h文件添加摄像机弹簧组件和摄像机组件。
//摄像机弹簧臂组件
class USpringArmComponent* SpringArmComponent;
//摄像机组件
class UCameraComponent* CameraComponent;

2) 在CPP文件中,添加两个头文件和在构造函数中注册这两个组件。
#include "GameFramework/SpringArmComponent.h"
#include "Camera/CameraComponent.h"

//注册摄像机手臂组件
SpringArmComponent = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArmComponent"));
//把这个组件绑定到根组件
SpringArmComponent->SetupAttachment(RootComponent);
//设置摄像机手臂和根组件之间的距离
SpringArmComponent->TargetArmLength = 300.0f;
//我们使用模型组件去进行旋转,如果不设置设个的话,Pitch轴无法进行视角移动
SpringArmComponent->bUsePawnControlRotation = true;

//注册摄像机组件
CameraComponent = CreateDefaultSubobject<UCameraComponent>(TEXT("CaameraComponent"));
//把摄像机绑定到摄像机手臂上
CameraComponent->SetupAttachment(SpringArmComponent);

3) 由于我们的骨骼模型生成的时候它的位置和旋转是不对的,所以我们要设置一下我们骨骼模型的位置和旋转。
//设置模型位置,这里我们把人物以Z轴移动了90个单位,也就向下移动了90个单位
GetMesh()->SetRelativeLocation(FVector(0,0,-90));
//设置模型面朝方向
GetMesh()->SetRelativeRotation(FRotator(0, -90,0));

编译一下,回到编辑器中,发现我们的摄像机已经添加了进去。
UE4摄像机已经添加进去

完整代码如下。

1) PlayingCharacter.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "PlayingCharacter.generated.h"

UCLASS()
class GAMEPROJECT_API APlayingCharacter : public ACharacter
{
    GENERATED_BODY()

public:
    // Sets default values for this character's properties
    APlayingCharacter();

protected:
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

public:
    // Called to bind functionality to input
    virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;

    void MoveForward(float val);  //人物往前移动
    void MoveBack(float val);  //人物向后
    void MoveRight(float val);  //人物向右
    void MoveLeft(float val);  //人物向左

    //跳跃开始
    void JumpStart();
    //跳跃结束
    void JumpEnd();

private:
    //这个是骨骼模型
    USkeletalMesh* SkeletalMesh = nullptr;
    //摄像机弹簧臂组件
    class USpringArmComponent* SpringArmComponent;
    //摄像机组件
    class UCameraComponent* CameraComponent;
};

2) PlayingCharacter.cpp
// Fill out your copyright notice in the Description page of Project Settings.

#include "PlayingCharacter.h"
#include "GameFramework/SpringArmComponent.h"
#include "Camera/CameraComponent.h"

// Sets default values
APlayingCharacter::APlayingCharacter()
{

    SkeletalMesh = CreateDefaultSubobject<USkeletalMesh>(TEXT("SkeletalMesh"));

    //加载模型
    SkeletalMesh = LoadObject<USkeletalMesh>(NULL,TEXT("SkeletalMesh'/Game/TwinSwordAnimsetBase/UE4_Mannequin/Mesh/SK_Mannequin.SK_Mannequin'"));

    //把我们的模型赋值到模型组件
    GetMesh()->SetSkeletalMesh(SkeletalMesh);
   
    //设置模型位置
    GetMesh()->SetRelativeLocation(FVector(0,0,-90));
    //设置模型面朝方向
    GetMesh()->SetRelativeRotation(FRotator(0, -90,0));

    //注册摄像机手臂组件
    SpringArmComponent = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArmComponent"));   
    //把这个组件绑定到根组件
    SpringArmComponent->SetupAttachment(RootComponent);               
    //设置摄像机手臂和根组件之间的距离
    SpringArmComponent->TargetArmLength = 300.0f;
    //我们使用模型组件去进行旋转,如果不设置设个的话,Pitch轴无法进行视角移动
    SpringArmComponent->bUsePawnControlRotation = true;

    //注册摄像机组件
    CameraComponent = CreateDefaultSubobject<UCameraComponent>(TEXT("CaameraComponent"));
    //把摄像机绑定到摄像机手臂上
    CameraComponent->SetupAttachment(SpringArmComponent);
}

关注微信公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。本公众号由C语言中文网站长运营,每日更新,坚持原创,敢说真话,凡事有态度。

魏雪原二维码
微信扫描二维码关注公众号