Trouble with Character's on_landed function


#1

Hiya!

I’m back from a bit of a break forced on me by my studies. It’s great to be able to work with :sk: again!

I’ve run into a bit of a snag though. I’m trying to convert a project from C++ to :sk: and I’m having some trouble with the landed event. I’m using the binary version of UE 4.18.3 and the corresponding marketplace version of :sk:.

I have a RefArcCharacter class, which is blueprinted in editor.

I have some dummy code just to see if the function is being called.

// Called upon landing when falling, to perform actions based on the Hit result.
// Note that movement mode is still "Falling" during this event. Current Velocity value is the velocity at the time of landing.
// Consider OnMovementModeChanged() as well, as that can be used once the movement mode changes to the new mode (most likely Walking).
// 
// @param hit Result describing the landing that resulted in a valid landing spot.
// See: OnMovementModeChanged()
//
// UE4 name of this method: OnLanded

&aka("OnLanded")

(HitResult hit) 

  
  [
  // Your code here.
  // May want to call superclass version of this routine:
  // RefArcCharacter@on_landed(hit)
     
    this.launch_character(Vector3!up * 1000, true, true)
  ]

I’ve tried this on both the c++ class and the BP in the :sk: IDE but to no avail.

This doesn’t seem to fire when I land. Now I know for events such as reaching the apex of a jump I can set up something in the constructor like so:

() 
  [
  this._on_reached_jump_apex_do[println("Apex Reached")]
  ]

But I don’t see any coroutines (IIRC they’re all prefixed with an underscore) relating to the landed event.

I know I can probably tie in through the _on_movement_mode_changed but if it’s possible I’d like to do it directly with a landed event.

Is there something I’m missing? IIRC I can make c++ functions that generate their own coroutines in :sk: but I’d like to know if I’ve just borked something somehwere before I run off implementing things I don’t need to.

Cheers and thanks in advance :smiley:


#2

You cannot currently override BlueprintImplementableEvents in Sk (or, to be exact, you can but they won’t get called from Blueprints). As a workaround, you’d create a BP node which then can call an Sk function. You can though, as you pointed out, call Sk code when C++ delegate events are invoked, that’s of course a slightly different use case.


#3

Ok that’s what I figured. Just wanted to make sure.

Thanks muchly!