Now your player can click items, but how do you find out what he clicked? In principle, we can use the same ray casting algorithm as for the previous example with the crosshairs. Only instead of casting the ray from the camera forward, we now cast it forward from the 3D coordinates of the click location.
Implement the
AnalogListener
object on theAnalog()
method to test for our left-click action,MAPPING_ROTATE
.private AnalogListener analogListener = new AnalogListener() { public void onAnalog(String name, float intensity, float tpf) { if (name.equals(MAPPING_ROTATE)) { // implement action here } } };
Replace the implement action here comment by the following code. To identify what was clicked, we use methods from the
com.jme3.collision
package. As before, we create an empty results list.CollisionResults results = new CollisionResults();
The next few steps are new. Since we are working with the...