2016-09-15 14 views
5

Tôi có vẻ hiểu lầm cách triển khai sự kiện trùng lặp trên các thành phần của mình. Tôi đã tạo một USphereComponent để theo dõi nhân vật của mình. Nó được thiết kế để bắn các sự kiện chồng chéo về diễn viên lân cận khác mà nằm trong tầm với của người chơi:USphereComponent and Overlap Events

AScrollsCharacter::AScrollsCharacter() 
{ 
    ...Redacted irellevant code... 

    //Create activate trigger radius 
    USphereComponent* activateRadius = CreateDefaultSubobject<USphereComponent>(TEXT("Activate Radius")); 
    activateRadius->InitSphereRadius(ACTIVATE_RADIUS); 
    activateRadius->bGenerateOverlapEvents = true; 
    activateRadius->SetupAttachment(RootComponent); 
    activateRadius->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap); 
    activateRadius->OnComponentBeginOverlap.AddDynamic(this, &AScrollsCharacter::OnOverlapActivateSphere); 
    activateRadius->bHiddenInGame = false; 
} 

void AScrollsCharacter::OnOverlapActivateSphere(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) 
{ 
    GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("We got a collision.")); 
} 

Thành phần cầu gắn mà không có lỗi, và là bán kính được vẽ trên màn hình cùng kích thước chính xác. Tuy nhiên, khi tôi mang bán kính tới các diễn viên khác trong trò chơi và khiến họ bị chồng chéo lên nhau, sự kiện đó dường như không bắn.

Tất cả các tác nhân tham gia đều có cờ Sự kiện tạo chồng chéo được đặt thành true.

Ai đó có thể giúp tôi hiểu những gì tôi bị thiếu trong thiết lập này không?

Chỉnh sửa: Các giới hạn gỡ lỗi của thành phần hình cầu có màu cam trong trình chỉnh sửa nhưng chuyển sang màu đỏ khi trò chơi đang chạy. Sự thay đổi màu đó có ý nghĩa không?

Trả lời

0

Đảm bảo rằng các diễn viên khác liên quan đến việc bật va chạm của họ, đồng thời đảm bảo rằng họ thực sự có một thành phần va chạm. Ví dụ, nếu các diễn viên khác có thành phần lưới xương, lưới đó cần phải có một tài sản vật lý hoặc nó sẽ không có bất cứ điều gì để va chạm với! Bạn cũng có thể thêm quả cầu va hộp/viên va chạm vào các diễn viên khác của mình và đảm bảo rằng va chạm được bật trên đó!

+0

Họ đang thực hiện. Tôi đã nói trong bài viết rằng tất cả các diễn viên liên quan đều có cờ Sự kiện tạo chồng lấp nhau được đặt thành true, ngụ ý rằng tất cả họ đều có các thành phần va chạm. – nathan

1

Nếu bạn vẫn đang cố gắng để khắc phục vấn đề này, có thể thử sử dụng

activateRadius->SetSphereRadius(ACTIVATE_RADIUS); 

thay vì

activateRadius->InitSphereRadius(ACTIVATE_RADIUS); 

Theo các tài liệu, chức năng bạn đang sử dụng, InitSphereRadius:

Đặt bán kính hình cầu mà không kích hoạt hiển thị hoặc cập nhật vật lý.

Tôi chắc chắn bạn muốn cập nhật vật lý đó.

+0

Cảm ơn bạn đã trả lời! Thật không may mà dường như không thay đổi bất cứ điều gì. Tôi nghĩ rằng SetSphereRadius kích hoạt bản cập nhật hiển thị bắt buộc, nhưng không có bản cập nhật bắt buộc đó, một bản cập nhật sẽ xảy ra mỗi lần đánh dấu bình thường. – nathan