游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

UE4创建第一人称角色C

  在这个教程中,我们将学习在虚幻引擎中如何使用C创建第一人称角色。
  1、第一人称游戏机制
  在视频游戏中,第一人称(FirstPerson)是对游戏玩家角色视点的图形渲染。当今最流行的第一人称游戏类型包括第一人称射击游戏、基于模拟的系统如飞行模拟器等。在这里,游戏玩家无法看到实际的游戏角色网格。虽然他们可能会看到一些零件,如手,武器等。此外,具有第一人称视角的游戏也不需要复杂的动画。2、第一人称游戏示例
  VillageBioHazard8(2021)
  HaloInfinite(2021)
  BioHazard7(2017)
  3、使用虚幻引擎创建第一人称角色
  我们将使用C创建一个第一人称角色,然后基于该C类创建子蓝图类。我们要创建的角色将如下所示:
  这里你可以看到摄像机充当了视点,并为玩家提供第一人称视角视图。胶囊组件以及骨架网格组件、角色移动组件提供了有关角色移动的属性,如行走速度、跳跃Z速度、重力等,默认情况下与虚幻引擎中的角色类一起出现。
  打开C类文件夹,然后右键单击创建新C类
  选择角色类并为C类命名,然后单击创建。
  现在,虚幻编辑器将打开源代码编辑器。
  打开C类的头文件,可以看到它已经附带了一些用于构造函数和覆盖方法的模板代码,例如在游戏启动时调用的BeginPlay()和为每帧调用的Tick()。在public或protected部分中添加以下函数声明。在这里,每种方法都对应于角色的特定运动。
  然后为UCameraComponent声明一个实例,该实例充当摄像机以提供第一人称视角。在这里,我们指定了UPROPERTY()宏,它告诉虚幻引擎的反射系统,给定的属性应该在基于这个C类创建的蓝图类中可访问。UPROPERTY(EditAnywhere,CategoryComponents)UCameraComponentCamera;
  注意:请确保导入必要的头文件。
  整个头文件代码如下所示:FilloutyourcopyrightnoticeintheDescriptionpageofProjectSettings。pragmaonceincludeCoreMinimal。hincludeGameFrameworkCharacter。hincludeCameraCameraComponent。hincludeFirstPersonPlayerCharacter。generated。hUCLASS()classFIRSTPERSONCHARACTERAPIAFirstPersonPlayerCharacter:publicACharacter{GENERATEDBODY()public:SetsdefaultvaluesforthischaracterspropertiesAFirstPersonPlayerCharacter();protected:CalledwhenthegamestartsorwhenspawnedvirtualvoidBeginPlay()override;UPROPERTY(EditAnywhere,CategoryComponents)UCameraComponentCamera;public:CalledeveryframevirtualvoidTick(floatDeltaTime)override;CalledtobindfunctionalitytoinputvirtualvoidSetupPlayerInputComponent(classUInputComponentPlayerInputComponent)override;voidLookRightLeft(floataxisvalue);voidLookUpDown(floataxisvalue);voidMoveForwardBackward(floataxisvalue);voidMoveRightLeft(floataxisvalue);voidBeginCrouch();voidEndCrouch();};
  现在打开项目设置,在input部分,我们添加键绑定以使用键盘和鼠标作为输入设备来控制角色:
  现在打开FirstPerson角色类的CPP文件,该文件具有在头文件中声明的构造函数,BeginPlay()和Tick()函数的实现。
  现在,我们需要在构造函数中初始化相机实例:AFirstPersonPlayerCharacter::AFirstPersonPlayerCharacter(){SetthischaractertocallTick()everyframe。Youcanturnthisofftoimproveperformanceifyoudontneedit。PrimaryActorTick。bCanEverTicktrue;CameraCreateDefaultSubobjectUCameraComponent(TEXT(PlayerCamera));CameraSetupAttachment(RootComponent);thisGetCharacterMovement()GetNavAgentPropertiesRef()。bCanCrouchtrue;}
  在这里,我们使用CreateDefaultSubobject()模板方法来创建实际的相机组件,该方法通过指定组件类类型来创建实际组件,在我们的例子中它是一个相机组件,所以使用UCameraComponent类,并在TEXT()宏中传入组件的名称。然后,我们将相机附加到根组件,该组件是角色类中的胶囊组件。然后,为了让我们的角色蹲下,我们将角色移动类的蹲伏属性(crouch)设置为true。
  接下来,为头文件中声明的方法创建实现代码:voidAFirstPersonPlayerCharacter::LookRightLeft(floataxisvalue){thisAddControllerYawInput(axisvalue);}voidAFirstPersonPlayerCharacter::LookUpDown(floataxisvalue){thisAddControllerPitchInput(axisvalue);}voidAFirstPersonPlayerCharacter::MoveForwardBackward(floataxisvalue){thisAddMovementInput(thisGetActorForwardVector()axisvalue);}voidAFirstPersonPlayerCharacter::MoveRightLeft(floataxisvalue){thisAddMovementInput(thisGetActorRightVector()axisvalue);}voidAFirstPersonPlayerCharacter::BeginCrouch(){thisCrouch();}voidAFirstPersonPlayerCharacter::EndCrouch(){thisUnCrouch();}
  AddMovementInput():此方法沿给定的世界方向矢量(通常归一化)添加移动输入,按ScaleValue的值缩放。如果ScaleValue0,则移动方向相反。scale值是函数中的轴值参数。其值范围为1。0f至1。0f。
  此方法有一个FVector类型的参数WorldDirection。对于前后移动,我们获取角色的前向向量并将其乘以比例值。在我们的例子中,当玩家按W时,比例值将为1。0f,乘以向前矢量,它成为ve矢量,玩家向前移动类似,当玩家按S时,比例值将为1。0f,乘以向前矢量,它成为ve矢量,玩家向后移动相同的概念应用于左右移动。
  AddControllerPitchInput():围绕Y轴的旋转被称为俯仰,它处理角色的上下观察。AddControllerYawInput():旋转的Z轴称为偏航,它处理角色的左右观察。Crouch()和Uncrouch()这两个方法是角色类的内置方法,用于执行蹲伏和取消蹲伏操作。
  接下来,我们需要将输入键与这些函数挂钩。它可以通过使用角色类的SetupPlayerInputComponent(UInputComponentPlayerInputComponent)方法来完成,因为角色类是pawn类的子类。在该函数中,在下面添加此代码行:PlayerInputComponentBindAxis(TEXT(Horizontal),this,AFirstPersonPlayerCharacter::LookRightLeft);PlayerInputComponentBindAxis(TEXT(Vertical),this,AFirstPersonPlayerCharacter::LookUpDown);PlayerInputComponentBindAxis(TEXT(ForwardBackward),this,AFirstPersonPlayerCharacter::MoveForwardBackward);PlayerInputComponentBindAxis(TEXT(RightLeft),this,AFirstPersonPlayerCharacter::MoveRightLeft);PlayerInputComponentBindAction(TEXT(Jump),IEPressed,this,ACharacter::Jump);PlayerInputComponentBindAction(TEXT(Crouch),IEPressed,this,AFirstPersonPlayerCharacter::BeginCrouch);PlayerInputComponentBindAction(TEXT(Crouch),IEReleased,this,AFirstPersonPlayerCharacter::EndCrouch);
  在这里,我们设置实际的轴输入和动作输入,并传递要调用的函数引用将它们与移动函数挂钩。
  现在编译代码并在ue4编辑器中打开C文件夹,右键单击并基于此C类创建蓝图。
  打开蓝图,确保勾选相机选项中的UsePawnControlRotation。这将允许相机在充当控制器时根据鼠标移动进行旋转。
  完整的FirtPersonPlayerCharacter。cpp代码:FilloutyourcopyrightnoticeintheDescriptionpageofProjectSettings。includeFirstPersonPlayerCharacter。hincludeDrawDebugHelpers。hincludeEngineWorld。hincludeKismetGameplayStatics。hincludeGameFrameworkPlayerController。hincludeGameFrameworkCharacterMovementComponent。hincludeComponentsInputComponent。hSetsdefaultvaluesAFirstPersonPlayerCharacter::AFirstPersonPlayerCharacter(){SetthischaractertocallTick()everyframe。Youcanturnthisofftoimproveperformanceifyoudontneedit。PrimaryActorTick。bCanEverTicktrue;CameraCreateDefaultSubobjectUCameraComponent(TEXT(PlayerCamera));CameraSetupAttachment(RootComponent);thisGetCharacterMovement()GetNavAgentPropertiesRef()。bCanCrouchtrue;PhysicsHandleCreateDefaultSubobjectUPhysicsHandleComponent(TEXT(Hand));HoldingSocketCreateDefaultSubobjectUSceneComponent(TEXT(HoldingSocket));}CalledwhenthegamestartsorwhenspawnedvoidAFirstPersonPlayerCharacter::BeginPlay(){Super::BeginPlay();if(PhysicsHandlenullptr){UELOG(LogTemp,Warning,TEXT(Gotit));}}CalledeveryframevoidAFirstPersonPlayerCharacter::Tick(floatDeltaTime){Super::Tick(DeltaTime);}}CalledtobindfunctionalitytoinputvoidAFirstPersonPlayerCharacter::SetupPlayerInputComponent(UInputComponentPlayerInputComponent){Super::SetupPlayerInputComponent(PlayerInputComponent);PlayerInputComponentBindAxis(TEXT(Horizontal),this,AFirstPersonPlayerCharacter::LookRightLeft);PlayerInputComponentBindAxis(TEXT(Vertical),this,AFirstPersonPlayerCharacter::LookUpDown);PlayerInputComponentBindAxis(TEXT(ForwardBackward),this,AFirstPersonPlayerCharacter::MoveForwardBackward);PlayerInputComponentBindAxis(TEXT(RightLeft),this,AFirstPersonPlayerCharacter::MoveRightLeft);PlayerInputComponentBindAction(TEXT(Jump),IEPressed,this,ACharacter::Jump);PlayerInputComponentBindAction(TEXT(Crouch),IEPressed,this,AFirstPersonPlayerCharacter::BeginCrouch);PlayerInputComponentBindAction(TEXT(Crouch),IEReleased,this,AFirstPersonPlayerCharacter::EndCrouch);}voidAFirstPersonPlayerCharacter::LookRightLeft(floataxisvalue){thisAddControllerYawInput(axisvalue);}voidAFirstPersonPlayerCharacter::LookUpDown(floataxisvalue){thisAddControllerPitchInput(axisvalue);}voidAFirstPersonPlayerCharacter::MoveForwardBackward(floataxisvalue){thisAddMovementInput(thisGetActorForwardVector()axisvalue);}voidAFirstPersonPlayerCharacter::MoveRightLeft(floataxisvalue){thisAddMovementInput(thisGetActorRightVector()axisvalue);}voidAFirstPersonPlayerCharacter::BeginCrouch(){thisCrouch();}voidAFirstPersonPlayerCharacter::EndCrouch(){thisUnCrouch();}
  原文链接:http:www。bimant。comblogue4firstpersoncharacter

热血传奇怒火合击少林霸主斗战胜佛攻略!如何降服这只猴子?大家好,今天给大家讲解一下怒火合击的斗战胜佛。大家有什么不懂的,欢迎留言评论私信哦,小编乐意为大家效劳!在怒火合击里,少林霸主斗战胜佛是一个400级的boss,击败斗战胜……双奥女村长!她为何要在村里筑起冰雪长城每届奥运会的奥运村都是个名副其实的小联合国,是各国和地区代表团成员、媒体记者的赛时之家,村民的好口碑向来是衡量奥运会举办是否完美成功的重要标准之一。对于奥运村大家庭来说,……开源。NET快速简单避免OOM的Excel处理工具《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个。NET处理Excel查、写、填充数据的工具Mi……宝鸡唯一!太白山下第一村获评2022年中国美丽休闲乡村(宝鸡新闻网惠耀辉)近日,农业农村部办公厅印发了《关于公布2022年中国美丽休闲乡村名单的通知》,推介全国255个乡村为2022年中国美丽休闲乡村。眉县汤峪镇汤峪村位列其中,也……做红烧肉时,焯水和直接炖都不对,大厨教你正确做法,软糯还不腻大家好,这里是南宁厨娘。软糯鲜香,肥而不腻的红烧肉大家一般都是怎么做的呢?其实制作红烧肉不论是焯水还是直接炖都不对,今天厨娘就在视频当中给大家分享红烧肉的正确做法,做出来的红烧……土豆有哪些做法?土豆有哪些做法?土豆是我们从小吃到大的最好食物,而且土豆的营养价值高。土豆中含有降血压的成分,具有类似降压药的作用。前一阵子老伴儿血压高,天天把土豆当饭吃。吃土豆对……江苏南通有哪些好带又便宜的特产及美食?江苏南通好吃便宜特产美食推荐:1。脆饼、2。嵌桃麻糕3。窨糕4。西亭脆饼5。正场薰糕6。草炉烧饼7。林梓潮糕8。白蒲茶干……为女性朋友介绍一碗补肝汤,小心眼脾气大肝气郁结的建议收藏肝郁是气机不展,心情不好,要疏泄。肝虚,则是藏血不足,不能濡养肝脏,要补。肝藏血,是指肝如同血库一般,能够贮藏一定的血液。这个血液是由脾胃把水谷精微物质转化成血而储存于肝……陕西有哪些名酒?陕西人虽然在酒量上不及内蒙和东北人。但是,陕西人爱喝啊!不仅仅爱喝,陕西人的酒局上海经常见到劝酒的场面,想必每一位陕西喝酒的汉子们,你们在无数个烧烤、撸串的夜晚,约三五友……教你江湖菜虎皮尖椒鸡的家常做法,味道麻辣鲜香,特别下饭嗨大家好!我是小猫爱厨房的小猫,今天又和大家见面了,分享生活、分享美食、分享快乐!今天小猫给大家带来的是一道虎皮尖椒鸡的做法,这是一道味道香辣好吃的下饭下酒菜,今天把它分享给大……立夏将至,多吃1红1白1鲜,浓稠有滋味,下饭好菜(本账号已与维权骑士签约,本文原创,搬运转载必究)立夏将至,多吃1红1白1鲜,浓稠有滋味,下饭好菜。今天是春天的最后一天,明天就是立夏了,立夏是夏天的第一天,进入明天之后……烧菜时先放盐,还是后放盐?先放盐会致癌吗?食盐是膳食中不可缺少的调味品,食盐是五味之主,味中之王,我们做菜要有味道,都离不开适时放盐,关于你说的炒菜是先放盐还是后放盐,这个不能一概而论,主要看你炒什么菜,首先炒青……
智慧农业数字乡村乡村振兴加速迈上新台阶稳步推进电信普遍服务项目,完成986个基站建设及验收,148个4G基站完成北斗授时功能改造。针对重庆大城市、大农村、大山区、大库区特点,精准开展全市数字乡村网络发展‘五提升一补……花旗银行警告半导体股票正面临严重低迷,是全球经济的危险信号花旗集团警告称,随着经济衰退风险的增加,半导体股票将走向长期低迷。花旗集团的悲观预测是在半导体行业的主要公司英伟达和美光科技在对收入前景发出警告、本周股价暴跌之后做出的。……开学第一天,少不了的梭子蟹晒一晒今天做的五菜一汤家常菜城市吃货挑战赛第二期今天是9月1日,宝宝开学的日子。宝宝已经上小学二年级啦!中午是爷爷去接的,我就负责做午饭。今天儿子也来吃饭,吃了中饭,要陪宝宝写作业,然后稍微休息一下……肉馅包子这样做,面皮宣软,肉馅鲜香多汁,老公说比买的更好吃8月吃什么昨天宝宝打我手机,说要开学了,叫我做些肉包子给她当早餐,还提出了要求;只要吃肉馅,还说不要加别的东西,哈哈真是一个无肉不欢的小朋友!外面在下大雨,别的地方……你知道糖是怎样做出来的吗?我们常见的糖大部份都是由甘蔗和甜菜提取的,从中提取出来的糖叫蔗糖,还有其它的蔗糖糖是从一些含糖量高的水果和蔬菜里提取出来的。当然还有一种被誉为糖中之王的甜叶菊,它可以作为……来晒一晒今天做的三菜一汤面拖蟹与梭子蟹,老公说螃蟹开会了城市吃货挑战赛第二期今天是9月2日,星期三,有时有雨。来晒一晒今天做的三菜一汤午餐菜。今天的午餐是清蒸梭子蟹,面拖蟹,清炒豇豆,虾米紫菜冬瓜汤,大米饭。一桌上……新一轮涨价开始了?零跑主力车型T03调价,最高涨幅0。66万零跑汽车官宣,从8月1日开始,调整旗下微型电动车零跑T03的售价,此次调价为价格上浮,上调幅度为0。66万元。零跑T03中上调的具体车型为一下几款:除了价格上调外,……狗狗币再次拉升,一周内涨幅超过94上周的最后一天狗狗币跌破零点,引得一阵唏嘘,但是本周就开始回涨了。总体来说十月对狗狗币来说是一个看涨的月份,因为狗狗之父埃隆马斯克接管了某平台。尽管在交易之初呈红色,但meme……大道云行全行业分布式存储案例集目前,TaoCloud已服务2000客户,累计部署数千PB,全面融入信创软硬件生态。专业的业务能力、极致的服务理念、极佳的存储产品让用户更加信任TaoCloud。一、教育……全福游,有全福福建30天深度游之十三世界建筑奇葩永定土楼全福游、有全福这才是国风永定土楼,位于中国东南沿海的福建省龙岩市永定区,永定,是纯客家县,是福建拥有最多的土楼的县,总共23000多座。是世界上独一无二的神奇的山区民居建……全福游,有全福福建30天深度游之二十四泉州客栈的自助晚餐美食测评团9月吃什么今天关于旅游的帖子暂时停一停不发了,发个与泉州旅游有关的美食贴吧。话说,我们是在4月1日到的泉州,而那时候正是临近清明节,所以很多中小旅店都人满……曲面屏普及到了千元价位,为何我依旧不推荐你选?体验是关键文科技V力2014年,三星带来了全球首款曲面屏手机:GalaxyNoteEdge,不过它并不是我们印象中的双曲面设计,而是单曲面设计,而且三星还为其加入许多新功能。比如可……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网