Jump to content

» «

Ray casting/Collision detection?

2 replies to this topic
  • LostDerp

    Player Hater

  • Members
  • Joined: 27 Nov 2011


Posted 01 February 2012 - 11:16 AM

Is there anyway to do any trace to find where there's collision within a line of sight? Or is there anyway to get the collision at a certain point?

  • jitsuin

    Meat Popsicle

  • Joined: 06 Dec 2011


Posted 01 February 2012 - 04:23 PM Edited by jitsuin, 03 February 2012 - 11:41 PM.


  • thaCURSEDpie


  • Members
  • Joined: 01 Jul 2007
  • None


Posted 11 February 2012 - 03:01 AM

There is no cheap way I know of. There are a number of ways though, some of which I've tried. The best I've come up with:

Asynchronous method
Create a new class which inherits the GTA.Timer class. Give it a GTA.Object property - this will be used for the col-detection. Upon creating the tracer object, create a small object (CJ_PROP_GRENADE works well) at the specified startposition. Give the object a specific velocity, the direction of which should be equal to the search direction, but the size (speed) should always be constant.

In the OnTickEvent of the class, set the object's velocity to the specified one. However, before you do so, check the current velocity against the 'ideal' velocity. If the velocity has changed too much (slowed down, change in velocity-direction), there has been a collision.

Save the object's coordinates and call the callback specified when creating the tracer object.

- asynchronous, thus non-blocking
- no search-length / distance limit

- relatively slow (~0.5 s / search: unsuitable for realtime tracing).

Something else you could try is hooking DirectX and using some D3D function (though I don't have a lot of experience with that. Hooking D3D is pretty easy though)

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users