• UE4C++3 物体挨打后来回换色


    #include "CoreMinimal.h"
    #include "Engine/StaticMeshActor.h"
    #include "TargetStaticMeshActor.generated.h"
    
    /**
     * h中的文件
     */
    UCLASS()
    class LEAMCPP_API ATargetStaticMeshActor : public AStaticMeshActor
    {
        GENERATED_BODY()
        
    public:
        UPROPERTY(EditDefaultsOnly, Category = "TargetSetting")//定义两个材质,用于来回切换
            UMaterialInterface* TargetRed;
        UPROPERTY(EditDefaultsOnly, Category = "TargetSetting")
            UMaterialInterface* TBlue;
    
        ATargetStaticMeshActor();
        virtual void NotifyHit(class UPrimitiveComponent* MyComp, AActor* Other, 
            class UPrimitiveComponent* OtherComp, bool bSelfMoved, FVector HitLocation,
            FVector HitNormal, FVector NormalImpulse, const FHitResult& Hit) override;
    };
    // Fill out your copyright notice in the Description page of Project Settings.
    //cpp里的文件
    
    #include "TargetStaticMeshActor.h"
    #include "Engine/Engine.h"
    #include "LeamCppProjectile.h"
    
    ATargetStaticMeshActor::ATargetStaticMeshActor()
    {
        
    }
    static bool Ifc=true;//定义一个全局变量用于检测颜色以及换色
    void ATargetStaticMeshActor::NotifyHit(class UPrimitiveComponent* MyComp, AActor* Other, class UPrimitiveComponent* OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, const FHitResult& Hit)
    {
        Super::NotifyHit(MyComp, Other, OtherComp, bSelfMoved, HitLocation, HitNormal, NormalImpulse, Hit);
        if (Other == nullptr) return;
    
        ALeamCppProjectile* projectile = Cast<ALeamCppProjectile>(Other);
        if (projectile != nullptr) {
            class UStaticMeshComponent* staticMesh = GetStaticMeshComponent();
            if (Ifc) {//如果颜色为a,那么换成b
                staticMesh->SetMaterial(0, TargetRed);
                Ifc = false;
            }
            else {//如果颜色为b,换成a
                staticMesh->SetMaterial(0, TBlue);
                Ifc = true;
            }
            
            if (GEngine)
            {
                GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("ALeamCppProjectile"));
            }
        }
        else {
            if (GEngine)
            {
                GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("NotALeamCppProjectile"));
            }
        }
        if (GEngine)
        {
            GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("NotifyHit"));
        }
    
    
    }
  • 相关阅读:
    leetcode189.轮转数组
    论文阅读笔记A Latent Transformer for Disentangled Face Editing in Images and Videos
    论文阅读笔记StyleCLIP: TextDriven Manipulation of StyleGAN Imagery
    bias variance tradeoff
    .NET类型转换的常用方式
    ASP.NET 页生命周期概述 与 运行page页面时的事件执行顺序 【转】
    查询密码过期时间 oracle
    web2.0开发教程 Ajax Control Toolkit输入提示
    web2.0开发教程1.2(HTML)——HTML4与HTML5的布局
    web2.0技术开发教程1.1(HTML)——HTML基本标签解释
  • 原文地址:https://www.cnblogs.com/tilyougogannbare666/p/14014723.html
Copyright © 2020-2023  润新知