However, I do not simply desire to place an object and "teleport" the player to that. What I want to do is place said object, only then have the player physically move at a scripted speed through the air along a calculated slope trajectory to that object.
Ideally they would play a fluid animation for this, like the jump animation, and not some ridiculous looking crumpled ragdoll projectile or motionless "freeze fly" effect. =P
What would be uber sixy would be to use the time-blur shader effect of the “Wuld” shout, only align the angle of the “stretch” to the first half of the player’s trajectory, have it “stretch out” as the player moved to that point, then collapse it back as the player flew the second half of the way, so as to create a sort of “rubber band” effect.
Or maybe better yet, if it is possible to rotate screen effects like a spotlight which seems to be the case in the Creation engine judging by the behavior of the snow storms always moving a certain direction regardless of your view angle, have this “emission point” be at the midpoint on the ground plane of this slope trajectory, and have it essentially rotate to follow the player so the appearance is almost an “anti-gravity” stretch. =)
Anyway, a couple things I see causing a snag would be:
How to move the player?
Morrowind had a cool function called XMOVE or something like that, which let you move an object along a trajectory at a given speed. I really wish we had that, though I'm not sure if it ever worked on the player character...
Another option would be to use Havok physics to “throw” the player, possibly using PushActorAway or otherwise a static object moved at a velocity into the player to “push” them, however either option seems to lead to the next dilemma which is:
Animation:
How to play an animation that will last the duration of the teleport/move, and avoid ragdoll physics "crumpling effects." I realize this would be easier and more realistic for shadowstep to be instant, but for the sake of this question, please ASSUME that I want a constant animation, and the player to physically move so you can see it in 3rd person, and it looks half way decent.
Since the move might take longer than a normal jump, the animation loop would end before the jump was complete, thereby looking stupid. So, is there a way to "pause" an animation via script at a certain point (the point in the jump animation where your arms are up and you have reached the apex of jump height)?
I am really hoping there is since it seems logical enough to be able to control animations by time frames, unless there’s just something I don't understand about the format, which is probable, since I've not gone much further than a basic skeleton and static models in blender! =P
Would this require actual editing of the animation file? Because that would basically be impossible for what I want to do which is account for a variable distance to target for the script.
Collisions:
Other concerns are how to handle collisions with stuff in between you and your target. I am thinking to pre-move an invisible object along the calculated trajectory at super-fast speeds, starting at a low angle arc (close to the ground) to check if there was a collision, then repeat if so with a slightly higher angle, then at the first angle that was collision-free, test again a fixed number of height units higher angle (unless that angle would exceed a given set range for a particular distance-to-target), to account for the gap required to "fit" the player model through the path, assuming a fixed "hitbox" or collision height for all races and if not, a "highest feasible estimate" accounting for existing and theoretical future race heights with Altmer presently being the tallest.)
I was also thinking of incrementing the distance to target by a determined number of game units, and testing collisions at a calculated “pass-through point” at each of these “planes” to see if the collision was occurring earlier or later in the above test.
If earlier, increment higher angles on the first collision plane as in the first test, determine if there is a possible “fit” for the player from there to the target, and recalculate from there to the target, testing with the same increment system for any new collisions on the new path, having a possibility of say three “jumps” each with a set range of possible reorientation along the way.
This all hangs on the assumption however, that it is possible to test for collisions in this way. I have yet to research this in SKSE, and anyone’s guess is welcome as to the capability of Papyrus. Other than that; being able to receive a coordinate value of a persistent reference object moving along a trajectory at the exact point it collides with something, I’m not sure how it could be done…
Possibly by using something like the Shadow Warrior perk where you become black smoke for the whole trip, and somehow turn off only player collisions altogether for the duration, so you move along a calculated trajectory regardless of what is in your path, and it still seems at least half-way believable in 3rd person that way…
It just seems somehow the lazy way out. =P
Anyway, lots of unknowns here, so if anyone is able to take a crack at any of it, I’d be appreciative.
