[SOLVED] '.getPosition' of undefined when using it in a variable statement

So I am us .getPosition is a var statement so I can use the position of this entity in different ways. but I keep getting an error that says this

“Uncaught TypeError: Cannot read property ‘getPosition’ of undefined”

this is my var statement

var start = this.entity.getPosition();

is there a way to fix this?

Hi @RoaringLegend456,

Where do you use this code? Seems that this.entity is undefined in your case.

Here is the full code

var LaserEmitting = pc.createScript('laserEmitting');

// initialize code called once per entity
LaserEmitting.prototype.initialize = function() {
    setInterval(this.DoRayCast,100);
};
LaserEmitting.prototype.DoRayCast = function(){
    var color = new pc.Color(1,1,1);
    var distance = 1000;
    var start = this.entity.getPosition();
    var end = new pc.Vec3();
    end.copy(entity.forward).scale(distance).add(start);
    
    app.renderLine(start, end, color);

I had the entity not be defined but I think I fixed it because it is not showing the error anymore but is now showing this errer

So you need to set the context on which your DoRayCast method runs, one way of doing it in Javascript is using bind():

setInterval(this.DoRayCast.bind(this),100);

Also here you should be using this.entity, much like you do two lines above:

end.copy(this.entity.forward).scale(distance).add(start);

thanks that fixed that but it know gives me an error for ‘app’ is not defined

App in the same fashion is a property of this script, so:

this.app.renderLine(start, end, color);

thanks
just so i don’t run into the same issue again should I always start with the word “this” when declaring something

In general you use this to assign properties to your script usually when you want them to be available in your script methods.

When requiring to store data locally e.g. in a single method, you are best using a local variable using var.

thanks

1 Like