- Home /
Vive controller interaction with gameobject (C#)
I've been trying to script an interaction with a game object so that when the controller and gameobject colliders are touching and the trigger is pressed, a snowball will spawn. Also whilst the trigger is held down the snowball will stay attached to the controller. This script is attached to both controllers.
The game object is a rigidbody which is not kinematic with a box collider which is a trigger. The controllers also have sphere colliders which are triggers (I have also tried it with the controllers not being triggers, the game object not being a trigger and both not being triggers - none of which do anything). Nothing happens when the controller touches the game object, both with the trigger pressed and without. Can anyone help fix this please?
public class ControllerInteraction : MonoBehaviour {
SteamVR_Controller.Device device;
SteamVR_TrackedObject trackedobj;
public GameObject Snowball;
Rigidbody sbrb;
void Awake () {
trackedobj = GetComponent<SteamVR_TrackedObject>() ;
sbrb = Snowball.GetComponent<Rigidbody>();
}
void OnTriggerEnter(Collider col){
if (device.GetPressDown(SteamVR_Controller.ButtonMask.Trigger))
Instantiate(Snowball, gameObject.transform);
sbrb.isKinematic = true;
Snowball.gameObject.transform.SetParent(gameObject.transform);
if (device.GetPressUp(SteamVR_Controller.ButtonMask.Trigger))
sbrb.isKinematic = false;
Snowball.gameObject.transform.SetParent(null);
}
}