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.
		
		
		
		
		
			
		
			
	
	
		
			73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
		
		
			
		
	
	
			73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
| 
								 
											1 year ago
										 
									 | 
							
								using Autohand;
							 | 
						||
| 
								 | 
							
								using System.Collections;
							 | 
						||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						||
| 
								 | 
							
								using UnityEngine;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								public class Briefcase : MonoBehaviour
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public Grabbable grabbable;
							 | 
						||
| 
								 | 
							
								    public Transform openCloseTransform;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public float openCloseSpeed = 1;
							 | 
						||
| 
								 | 
							
								    public AnimationCurve openCloseCurve;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public float openAngle = 110;
							 | 
						||
| 
								 | 
							
								    public float closeAngle = -10;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    bool isOpen = true;
							 | 
						||
| 
								 | 
							
								    float openCloseState = 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Vector3 targetOpenRotation;
							 | 
						||
| 
								 | 
							
								    Vector3 targetCloseRotation;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private void OnEnable() {
							 | 
						||
| 
								 | 
							
								        targetOpenRotation = new Vector3(openAngle, 0, 0);
							 | 
						||
| 
								 | 
							
								        targetCloseRotation = new Vector3(closeAngle, 0, 0);
							 | 
						||
| 
								 | 
							
								        openCloseState = isOpen ? 1 : 0;
							 | 
						||
| 
								 | 
							
								        openCloseTransform.localRotation = Quaternion.Euler(Vector3.Lerp(targetCloseRotation, targetOpenRotation, openCloseCurve.Evaluate(openCloseState)));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public void Open() {
							 | 
						||
| 
								 | 
							
								        isOpen = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public void Close() {
							 | 
						||
| 
								 | 
							
								        isOpen = false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    void Update() {
							 | 
						||
| 
								 | 
							
								        if(isOpen && openCloseState < 1) {
							 | 
						||
| 
								 | 
							
								            openCloseState += Time.deltaTime * openCloseSpeed;
							 | 
						||
| 
								 | 
							
								            openCloseState = Mathf.Clamp01(openCloseState);
							 | 
						||
| 
								 | 
							
								            openCloseTransform.localRotation = Quaternion.Euler(Vector3.Lerp(targetCloseRotation, targetOpenRotation, openCloseCurve.Evaluate(openCloseState)));
							 | 
						||
| 
								 | 
							
								            if(openCloseState >= 1) {
							 | 
						||
| 
								 | 
							
								                OnOpen();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        else if(!isOpen && openCloseState > 0) {
							 | 
						||
| 
								 | 
							
								            openCloseState -= Time.deltaTime * openCloseSpeed;
							 | 
						||
| 
								 | 
							
								            openCloseState = Mathf.Clamp01(openCloseState);
							 | 
						||
| 
								 | 
							
								            openCloseTransform.localRotation = Quaternion.Euler(Vector3.Lerp(targetCloseRotation, targetOpenRotation, openCloseCurve.Evaluate(openCloseState)));
							 | 
						||
| 
								 | 
							
								            if(openCloseState <= 0) {
							 | 
						||
| 
								 | 
							
								                OnClose();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public void OnOpen() {
							 | 
						||
| 
								 | 
							
								        foreach(var placepoint in grabbable.childPlacePoints) {
							 | 
						||
| 
								 | 
							
								            placepoint.enabled = true;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public void OnClose() {
							 | 
						||
| 
								 | 
							
								        foreach(var placepoint in grabbable.childPlacePoints) {
							 | 
						||
| 
								 | 
							
								            placepoint.enabled = false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |