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#
		
	
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;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |