Hi,
This seems like it should be pretty simple but I am having a hard time figuring it out.
I want to calculate the velocity of my character. E.G. the difference between it’s position in the current frame and it’s position in the previous frame.
I am having trouble saving the character “previous position” so I can access it in the current frame
So far I have this
// update code called every frame
Velocity.prototype.update = function(dt) {
var player = this.app.root.findByName(‘player’);
var prevPos = ?????;
var plyrPos = player.getPosition();
var x = prevPos.x - plyrPos.x;
var y = prevPos.y - plyrPos.y;
var z = prevPos.z - plyrPos.z;
var velicity = (x,y,z);
};
Any help would be appreciated!
Thanks!
You where super close, just had to set prevPos after calculating velocity. Its best to store it for re-use like so.
initialize
// initialize code called once per entity
Velocity.prototype.initialize = function() {
// player: entity
this.player = this.app.root.findByName('player');
// positional data
this.previousPosition = new pc.Vec3();
this.velocity = new pc.Vec3();
};
update
// update code called every frame
Velocity.prototype.update = function(dt) {
// calculate velocity
const position = this.player.getPosition();
this.velocity.sub2(position, this.previousPosition);
// store position as previous
this.previousPosition.copy(position);
};
3 Likes
Thanks so much pixelpros!
This works perfectly, and is a big help in understanding how better to set up scripts like this. I am very new to js in general so I appreciate the support.
1 Like