using UnityEngine; using System.Collections; namespace Valve.VR.InteractionSystem.Sample { public class ButtonExample : MonoBehaviour { public HoverButton hoverButton; public GameObject prefab; private void Start() { hoverButton.onButtonDown.AddListener(OnButtonDown); } private void OnButtonDown(Hand hand) { StartCoroutine(DoPlant()); } private IEnumerator DoPlant() { GameObject planting = GameObject.Instantiate(prefab); planting.transform.position = this.transform.position; planting.transform.rotation = Quaternion.Euler(0, Random.value * 360f, 0); planting.GetComponentInChildren().material.SetColor("_TintColor", Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f)); Rigidbody rigidbody = planting.GetComponent(); if (rigidbody != null) rigidbody.isKinematic = true; Vector3 initialScale = Vector3.one * 0.01f; Vector3 targetScale = Vector3.one * (1 + (Random.value * 0.25f)); float startTime = Time.time; float overTime = 0.5f; float endTime = startTime + overTime; while (Time.time < endTime) { planting.transform.localScale = Vector3.Slerp(initialScale, targetScale, (Time.time - startTime) / overTime); yield return null; } if (rigidbody != null) rigidbody.isKinematic = false; } } }