|
好记性不如烂笔头,而且Unreal4用的相对来说也比较少,工作用Unity,学习时间大部分用在DirectX上,也就偶尔看看Unreal。Unreal的API肯定记不住,现在写下来,省的下次再去Google看一堆文章,方便自己。
看着蓝图教程,用C++来实现,发现自己还是满蛋疼的。教程中是拖入一个新的Mesh来区分AI和Player,懒得拖,就用Player的Mesh,修改下显示颜色来做区分,简单粗暴。
先来看下原来的材质球:
拖一个VectorParameter,取名为Color,再跟之前的TextureSample相乘就好,这个BaseColor应该是Diffuse(漫反射吧,我猜的,看到了Specular和Normal)
接着就是代码上的修改了:
void AAICharacter::Initialize(){ // Set Skeletal Mesh auto skeletalMesh = GetMesh(); static ConstructorHelpers::FObjectFinder<USkeletalMesh> aiMesh( TEXT("SkeletalMesh'/Game/Model/Character/Eve_by_J__Gonzales.Eve_by_J__Gonzales'")); if (aiMesh.Object != nullptr) { skeletalMesh->SetSkeletalMesh(aiMesh.Object); auto meshLocation = FVector(0.0f, 0.0f, -88.0f); auto meshRotation = FRotator(0.0f, -90.0f, 0.0f); auto meshScale = FVector(1.0f, 1.0f, 1.0f); auto meshTransform = FTransform(meshRotation, meshLocation, meshScale); skeletalMesh->SetRelativeTransform(meshTransform); } // Create Dynamic Material auto dynamicMaterial = skeletalMesh->CreateDynamicMaterialInstance(0); dynamicMaterial->SetVectorParameterValue(TEXT("Color"), FLinearColor(1.0f, 0.0f, 0.0f, 1.0f));} 上面一段就是AI设置Mesh的代码,跟Player的代码一样。有注释。接下来的2行代码就是修改材质球中参数名为Color的VectorParameter,为了区分,将AI的改成红色。
效果如下:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|