You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
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<GameObject>(prefab);
 | 
						|
            planting.transform.position = this.transform.position;
 | 
						|
            planting.transform.rotation = Quaternion.Euler(0, Random.value * 360f, 0);
 | 
						|
 | 
						|
            planting.GetComponentInChildren<MeshRenderer>().material.SetColor("_TintColor", Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f));
 | 
						|
 | 
						|
            Rigidbody rigidbody = planting.GetComponent<Rigidbody>();
 | 
						|
            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;
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |