Download

Extra custom collision channel

I almost use up all custom channel from ECC_GameTraceChannel1 to ECC_GameTraceChannel18.
Can I have more channel in case that I really need more channel ?

Thanks

v4.27

I don’t believe you can get more channels than that.

Would you mind sharing what custom channels you have decided to create? I feel that you may be using them slightly wrong.

Sure

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Skill/CFSkillModel.h"
#include "Engine/EngineTypes.h"
#include "CFCollisionInfo.generated.h"

UCLASS()
class UCFCollisionInfo : public UObject
{
	GENERATED_BODY()
	
public:
    static ECollisionChannel GetMonsterCollisionTrack();
    static ECollisionChannel GetClassCollisionTrack();
    static ECollisionChannel GetResidentCollisionTrack();
    static ECollisionChannel GetBuildingCollisionTrack();
    static ECollisionChannel GetCoffeeTreeCollisionTrack();
    static ECollisionChannel GetCocoaTreeCollisionTrack();
    static ECollisionChannel GetPlantTileCollisionTrack();
    static ECollisionChannel GetPavingFloorTileCollisionTrack();
    static ECollisionChannel GetBaristaCollisionTrack();
};
// Fill out your copyright notice in the Description page of Project Settings.

#include "CFCollisionInfo.h"

ECollisionChannel UCFCollisionInfo::GetMonsterCollisionTrack() {
	return ECollisionChannel::ECC_GameTraceChannel5;
}

ECollisionChannel UCFCollisionInfo::GetClassCollisionTrack() {
	return ECollisionChannel::ECC_GameTraceChannel6;
}

ECollisionChannel UCFCollisionInfo::GetResidentCollisionTrack() {
	return ECollisionChannel::ECC_GameTraceChannel7;
}

ECollisionChannel UCFCollisionInfo::GetBuildingCollisionTrack() {
	return ECollisionChannel::ECC_GameTraceChannel8;
}

ECollisionChannel UCFCollisionInfo::GetCoffeeTreeCollisionTrack() {
	return ECollisionChannel::ECC_GameTraceChannel9;
}

ECollisionChannel UCFCollisionInfo::GetCocoaTreeCollisionTrack() {
	return ECollisionChannel::ECC_GameTraceChannel10;
}

ECollisionChannel UCFCollisionInfo::GetPlantTileCollisionTrack() {
	return ECollisionChannel::ECC_GameTraceChannel11;
}

ECollisionChannel UCFCollisionInfo::GetPavingFloorTileCollisionTrack() {
	return ECollisionChannel::ECC_GameTraceChannel12;
}

ECollisionChannel UCFCollisionInfo::GetBaristaCollisionTrack() {
	return ECollisionChannel::ECC_GameTraceChannel13;
}

I have 9 object, each has its own channel. I am afraid I reach the limit when game designer need more objects. :slight_smile: I can start from ECC_GameTraceChannel1 instead of ECC_GameTraceChannel5.

So sorry for the late reply!

Yeah, here’s the problem - You’re using channels to denote things that are really specific in nature.

Take the example of the base engine collision channels: WorldStatic
This covers a broad range of possible objects as, for collision channels to be efficient, they should be used for quite a lot of individual objects.

The specificity you’re creating in your collision channels could be better achieved in certain ways, such as with actor tags to denote the type of object you’re dealing with.