Need Help Spawning Attack from Boss Tails Instead of Center in Boss Arena

Yeah, I would keep the tails and collision separate, particularly because you can reference each of those individually as needed in the level blueprint. I wouldn’t have an individual class created exclusively for level props - especially if you aren’t going to reuse those assets in another level.

There are good ways to avoid having to cast to the player, but it generally is not a problem if the player class is likely to be loaded/spawned all the time anyway. The whole idea of keeping reference chains in check is to keep unnecessary loading to a minimum. For instance, if you had class A casting to class B, if class A ever gets loaded, it would also have to load class B. This isn’t as much of a problem if class B is already loaded, but generally it’s best to keep these minimized.

Few good ways to do it:

  1. Blueprint Interfaces: This allows you (as long as you have some reference to the actor during runtime) to send messages to another class - if the class implements the interface, then it will receive the message and call the associated event. This is best thought of as the player has an “Interact” input and multiple different actors can respond to that same interaction (like a door will open and a light will turn on).
  2. C++: If you are able to write code, this is definitely the best way. There are no reference chains, and it is the fast way to do it.
  3. Game State: In your game state class, at begin play you can set a reference to the player to a variable, that all classes would then be able to access (via Get Game State node → Cast to Game State class → Get reference variable).

For classes that I don’t create a C++ class for, I tend to utilize 2 and 3 (set the reference in C++, for the Game State class), otherwise I have reference variables that are set in C++, which then can be accessed in my blueprint classes that inherit from those classes.

As for references that don’t work, you need to make sure two things:

  1. The actor is actually spawned in the game world.
  2. That the reference variable is set with the specific spawned actor reference.

So, in the level blueprint, if you’ve created a variable for the player class, you need to cast to the player and set that reference to the variable, before you can use it. Otherwise, it’ll be null or worse, point to some other memory that will crash the game if accessed (why it’s good practice to check if references are valid before using them).

As for sequences, if you want an animation to play initially, sequences are the way to go.