As long as something is working, “wrong” in coding is a spectrum that goes from very poor performance to optimal performance. So if it works, then your “logic” isn’t “wrong” per se but that doesn’t mean it is the “right” choice or the “best” choice. If there is only 1 actor on each team I would cast directly to that actor. Casting is basically a way to transform 1 data type into another. In order for it to work your data types have to be compatible. For example, you have an overlap event, the player character overlaps a trigger volume and the volume recognizes an “actor” overlapped it. It does not however, know exactly “who” did the overlap, it could be a player or a bullet, so you take the “overlapped actor” output which holds the reference to the overlapped actor and you would “cast to” the player character for example. This will then attempt to turn the “overlapped actor” into a “player character” reference, if the actor that overlapped was in fact the player character, this cast will succeed if not, it fails to convert. You would then script logic after that accordingly. This is the purpose of casting. Casting when successful also allows you access to variables contained within the blueprint you cast to, so in our example above, once you have the player character cast succeed you would then be able to alter any variable located within the player character.