CrazyM Posted June 15, 2014 Share Posted June 15, 2014 I'm trying to translate my raycasting experience in Unity and Blender GE to Leadwerks, but I'm having a hard time connecting the dots. My test scene includes one cube on the ground, and another cube next to the first (on X axis) and raised above the ground and above the height of the ground cube so that when the game starts, the raised cube falls next to the ground cube. I have a lua script attached to the ground cube and I'm trying to cast a ray from the ground cubes position to a position farther down the x axis so that the raised cube will intersect when it falls. This is my code in the UpdateWorld function. I get an blank error window. I'm very inexperienced with Leadwerks, so I may be going about it all wrong, but this is what I've gathered from the docs. Thanks for any help you can provide. function Script:UpdateWorld() self.position = self.entity:GetPosition() self.right = Vec3(self.position.x + self.right.x, self.position.y, self.position.z); local pickInfo = PickInfo() local clear = true local world = World:GetCurrent() local context = Context:GetCurrent() local pos = self.camera:Project(Vec3(self.position)) local pRight = self.camera:Project(Vec3(self.right)) context:DrawLine(pos.x, pos.y, pRight.x, pRight.y) if (world:Pick(self.position, self.right, pickinfo, 0.0, true)) then clear= false end end Quote CrazyMinnowStudio.com Youtube, Twitter, Facebook, G+ Link to comment Share on other sites More sharing options...
Ma-Shell Posted June 15, 2014 Share Posted June 15, 2014 To me it looks like you are referencing a variable that doesn't exist yet: The line self.right = Vec3(self.position.x + self.right.x, self.position.y, self.position.z); uses the variable self.right.x, which isn't defined yet, I guess. Try using a constant there (something like self.right = Vec3(self.position.x + 100, self.position.y, self.position.z); ) and see, if it solves the issue. Quote Link to comment Share on other sites More sharing options...
CrazyM Posted June 15, 2014 Author Share Posted June 15, 2014 [self.right] is defined outside of the function as: Script.right=Vec3(1, 0, 0)--Vec3 I found the problem, I had accidentally used a lowercase in the [pickInfo] variable in the Pick function. It's working now. Thanks 1 Quote CrazyMinnowStudio.com Youtube, Twitter, Facebook, G+ Link to comment Share on other sites More sharing options...
CrazyM Posted June 15, 2014 Author Share Posted June 15, 2014 That solved the raycast problem, But I'm still having issues drawing the line for debugging. I'm getting an error with no error message on the following line: local pos = self.camera:Project(Vec3(self.position)) I have the camera defined outside the function as: Script.camera=Entity--Entity And I linked the scene camera to this property in the editor. Quote CrazyMinnowStudio.com Youtube, Twitter, Facebook, G+ Link to comment Share on other sites More sharing options...
Ma-Shell Posted June 15, 2014 Share Posted June 15, 2014 The problem is that self.position is already a Vec3, so you just need to remove "Vec3" local pos = self.camera:Project(self.position) Also note, that your value of right.x will increase each frame, as in the first one it is: right.x = 1 ==> position.x + right.x = position.x + 1 right.x = position.x + 1 ==> position.x + right.x = position.x + position.x + 1 right.x = position.x + position.x + 1 ==> position.x + right.x = position.x + position.x + position.x + 1 ... Quote Link to comment Share on other sites More sharing options...
CrazyM Posted June 15, 2014 Author Share Posted June 15, 2014 Looks like my duplicated cube had a duplicate of the script and the Camera was not bound to the exposed entity property. Removing the script on the second cube, and removing the Vec3 cleared the errors. I moved my self.right setter to the Start function. Thanks for helping, sorry for the Leadwerks noob mistakes! Quote CrazyMinnowStudio.com Youtube, Twitter, Facebook, G+ Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.