Custom Component, Unreal Engine里定制组件

if you want to do every tick to any Actor, you'd better write your own Component. 
the probable  problems you may went through:

1. TickComponent not called at all.
solution:  You can set the ticking properties of a component through its PrimaryComponentTick property. Try adding the following to your component's constructor:
PrimaryComponentTick.bCanEverTick = true;

2. TickComponent called only Once.
Solution:  As it turns out. C++ components are not active by default. Activating the component caused TickComponent to be called more than once. Tye adding the following to your component's constructor:
bAutoActivate = true;

3. You can not fine your custom Component in the Add Components List
I think you may be missing sth like "..,meta = (BlueprintSpawnableComponent)" just before function declaration.

Get ActorLocation and Rotation should be written as:
this->GetOwner()->GetLocation();
this->GetOwner()->SetLocation(...);
this->GetOwner()->GetRotation();
this->GetOwner()->SetRotation(...);

Sample:
.h
#pragma once 
#include "FaceToMainCharacterComp.generated.h" 
UCLASS(ClassGroup = FaceTo,meta = (BlueprintSpawnableComponent)) 
class UFaceToMainCharacterComp : public UActorComponent 
{ 
     GENERATED_UCLASS_BODY() 
protected: 
     virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction); 
};

.cpp
#include "MyThirdPersonCode.h"   //change it to YourOwnGame.h
#include "FaceToMainCharacterComp.h"

UFaceToMainCharacterComp::UFaceToMainCharacterComp(class FPostConstructInitializeProperties const &PCIP)
: Super(PCIP)
{
PrimaryComponentTick.bCanEverTick = true;
bAutoActivate = true;
}

void UFaceToMainCharacterComp::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
ACharacter* player = UGameplayStatics::GetPlayerCharacter(this, 0);
FVector playerLoc = player->K2_GetActorLocation();
FVector actorLoc = this->GetOwner()->GetActorLocation();
FVector offDir = playerLoc - actorLoc;
offDir *= FVector(1.0, 1.0, 0.0);
offDir.Normalize();
FRotator rot = offDir.Rotation();

this->GetOwner()->SetActorRotation(rot);

FVector tmp;
float length = 0.0;
FVector distDir = playerLoc - actorLoc;
distDir.ToDirectionAndLength(tmp, length);
distDir.Normalize();
if (length > 100.0)
{
     this->GetOwner()->SetActorLocation(actorLoc + distDir);
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Game Development and Simulation with Unreal Technology explores the use of Unreal Engine 4 (UE4) for the development of real-time digital interactive contents to be used in computerized games or simulations. The engine is considered in three main iterations: from the basic use of the engine to build games and simulation content out of the box, to intermediate design of interactive content by building on the pre-supplied contents from the base engine, and through advanced implementations geared toward a comprehensive understanding of the power of the Unreal Engine. This is one of the first books on developing interactive content for games, entertainment, and simulation to cover the newly released UE4. Industry-level game concepts in level design, coding, and programming, networking, and multiplayer concepts are covered. The book presents beginner- through advanced-level concepts in designing and developing games with the Unreal Engine 4. It includes small/mid-scale projects developed as concept examples throughout the book, which can be used in more comprehensive and entertaining interactive computer simulations and games. The book is organized into three parts. Part 1 covers the basics of the unreal engine, including an overview of each subcomponent of the engine, an overview of the UE4 project templates, and the main features each provides. Part 2 delves into more advanced topics in the new UE4 material pipeline, including layered materials and different shading models. Part 3 walks you through the steps of building your own games with UE4. It also provides advanced coverage of Blueprint systems in UE4. Each chapter includes do-it-yourself extensions to the concept modules presented to solidify your understanding of the concepts and techniques. Exercises and summaries are also included at the end of each chapter to help take your understanding of Unreal Engine 4 to the next level. Table of Contents SECTION I Unreal Technology Basics: Introductory Development Techniques Chapter 1 Setting up Unreal Project Templates Chapter 2 Introduction to Level Design in Unreal Technology Chapter 3 Unreal Visual Scripting with Blueprints Chapter 4 Materials in Unreal Engine SECTION II Making Game Worlds Stand Out: Intermediate Development Concepts Chapter 5 Advanced Material Concepts in Unreal Engine Chapter 6 Visual Effects and Cascade in Unreal Engine Chapter 7 Terrains and Landscapes in Unreal Engine SECTION III Example Games: Advanced Game Development Concepts Chapter 8 Advanced Blueprint Concepts Chapter 9 A Top-Down Game with Blueprints Appendix A Material Expressions in Unreal Engine 4 Appendix B Distributions in Unreal Engine 4 Appendix C The Curve Editor in Unreal Engine 4

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值