zoukankan      html  css  js  c++  java
  • 游戏开发之UE4添加角色到场景中

    接着上次继续学习,现在我们已经有了一个场景并且运行了,我们需要添加一个角色到场景中。要这样做,我们必须从UE4的GameFramework类继承它。

    一. 创建一个从Character类继承的类

    从基本框架类继承是很简单的:
    1) 在项目中打开你的UE4编辑器。

    2) 在文件,选择“新建C++类”。

    3) 这里你可以选择从Pawn类(Pawn类从控制器接收输入)继承或从Actor类继承。不过我们可以这里选择从Character类(角色)继承。

     4) 点击继续,然后你可以命名这个类。这里我们将其命名为Avatar。

    5) 最后点击创建类来使用代码创建这个类。

    6) 然后UE4会自动运行你的VS项目。我们在项目解决方案中打开Avatar.h文件:

    Avatar.h是这样的:

    // Fill out your copyright notice in the Description page of Project Settings.
    
    #pragma once
    
    #include "GameFramework/Character.h"
    #include "Avatar.generated.h"
    
    UCLASS()
    class MYFIRSTCODE_API AAvatar : public ACharacter
    {
    	GENERATED_BODY()
    
    public:
    	// Sets default values for this character's properties
    	AAvatar();
    
    	// Called when the game starts or when spawned
    	virtual void BeginPlay() override;
    	
    	// Called every frame
    	virtual void Tick( float DeltaSeconds ) override;
    
    	// Called to bind functionality to input
    	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
    
    	
    	
    };
    

    UCLASS()和GENERATED_UCLASS_BODY()都是UE4定义好的宏,UCLASS()宏使得你的C++代码在UE4编辑器中可用。GENERATED_UCLASS_BODY()会适当处理你的类函数成为一个UE4类。现在你不需要彻彻底底地搞清楚它们的工作原理,你只需要确保它们在正确的位置出现。

    二. 为角色创建一个模型

    现在我们avatar是继承了角色类,但是还需要给角色赋予一个模型。我们可以从UE4的商城找免费的模型,步骤如下:

    1) 点击工具栏的市场,进入UE4的商城。

    2) 在类别中选择角色,找到一个名字叫Animation Starter Pack的免费资源包,点击进去。

    4) 点击下图中的免费按钮添加到库里面。(可能加载有点慢,耐心等待,我加载了几分钟呢)

    5) 下载完后点击库,点击“添加到工程”。

    6) 在新窗口中,选择Demo1,然后点击添加到项目。

    7) 现在,我们可以找到刚才添加的资源,在内容浏览器点击选择路径:

    8) 选择AnimStarterPack文件夹:

    三 在运行时改变载入的资源

     载入网格通常情况下,如果使用C++代码来指定要载入的资源,这是一种硬编码的坏习惯。在运行程序的时候,如果资源发生了改变,则程序不会做出改变。更好的做法是,可以在运行时改变载入的资源。

    下面我们从C++类中创建一个蓝图:
    1) 在菜单栏中的窗口-开发者工具-类别查看器。

    2) 在类别查看器中,右击Avatar,选择创建蓝图类。(如果找不到Avatar,请关闭UE4编辑器,再重新打开)

    3) 在下方输入蓝图类名称(我这里是BP_Avatar),点击保存。然后会来到蓝图编辑器:

    4) 在左上角的组件窗口中,选择Mesh:

    5) 在右侧的细节面板中,在Mesh选项卡中,选择下拉按钮,然后点击视图选项,点击显示引擎内容,再选择TutorialTPP。

     


    6) 这时候碰撞体看起来是这样的,模型和碰撞体是对不上的:

    7) 然后我们通过W、E、R快捷键变换模型,使之近似地包围在碰撞体里面。如果碰撞胶囊体不够大,你可以点击组件的CapsuleComponent,然后在细节面板的Shape调节胶囊体大小:

    8) 然后我们可以关闭窗口。在内容浏览器中将BP_Avatar拖放到场景中。

    四 添加动画动作

    添加动画你可以看到人物模型是呈T型的,3D建模/动画师通常都会让人物默认状态下摆T型,因为此时这可以使得人物做出各种各样的动作。

    1) 双击内容浏览器的BP_Avatar,重新打开蓝图编辑器。

    2) 在上方选项卡中点击视口,然后选择Mesh,在右侧的细节面板中的Animation选项中的Anim Blueprint Generated Class中选择UE4ASP_Hero_AnimBlueprint。

    这样就完成了一个模型的动画添加了,关于动画的更多细节,我们在后面的教程中会深入探讨。

    五 添加摄像机

    为了使得我们有一个第三人称视角,我们给该角色添加上摄像机以追随该角色。

    1) 在组件中进行如下的步骤:

    2) 移动摄像机并旋转角色到如下状态(注意角色的蓝色箭头是角色的前进方向,所以要使得摄像机和角色自身的朝向都要面对着蓝色箭头):


    3) 点击工具栏的保存。

    现在的角色还不能被控制,我们下一节继续讲如何编写C++代码来控制角色。

    感谢您的阅读,若有不足之处,欢迎指教,共同学习、共同进步。 博主网址:http://www.cnblogs.com/ChinacloudTech/ 独立博客:http://futuretechx.com 如您喜欢,麻烦推荐一下;如您有新想法,欢迎提出,邮箱:1145356699@qq.com。 本博客为博主原创,欢迎转载,但必须注明博客来源。 更多关于游戏开发的内容也可关注微信公众号:微浪游戏
  • 相关阅读:
    Spring框架中的单例bean是线程安全的吗?
    Spring Cloud 解决了哪些问题?
    服务端处理 Watcher 实现 ?
    内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
    vue-router点击同一个页面异常处理
    mybatis代码生成+自定义注解+自定义注释
    lombok使用
    idea格式化设置
    寒假每周总结4
    寒假每日日报27
  • 原文地址:https://www.cnblogs.com/ChinacloudTech/p/6291286.html
Copyright © 2011-2022 走看看