mirror of
https://github.com/nothke/quality-control.git
synced 2024-11-10 04:53:41 +00:00
72 lines
1.6 KiB
C#
72 lines
1.6 KiB
C#
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
|
||
|
public class CranePickDrop : MonoBehaviour
|
||
|
{
|
||
|
public SlidingCrane crane;
|
||
|
public Magnet magnet;
|
||
|
public Transform dropTarget;
|
||
|
|
||
|
public Rigidbody handlingBody;
|
||
|
|
||
|
public float magnetStrength;
|
||
|
|
||
|
public enum State
|
||
|
{
|
||
|
Idle,
|
||
|
Catching,
|
||
|
Tansporting,
|
||
|
Finished,
|
||
|
}
|
||
|
|
||
|
public State state;
|
||
|
|
||
|
public void OnTriggerEnterSignalReceived(EnterTriggerSender sender)
|
||
|
{
|
||
|
var otherRb = sender.triggeredCollider.attachedRigidbody;
|
||
|
|
||
|
if (otherRb && otherRb.isKinematic == false && state == State.Idle)
|
||
|
{
|
||
|
handlingBody = otherRb;
|
||
|
state = State.Catching;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void OnTriggerExitSignalReceived(EnterTriggerSender sender)
|
||
|
{
|
||
|
var otherRb = sender.triggeredCollider;
|
||
|
}
|
||
|
|
||
|
void Start()
|
||
|
{
|
||
|
magnetStrength = magnet.strength;
|
||
|
}
|
||
|
|
||
|
void Update()
|
||
|
{
|
||
|
if (state == State.Catching)
|
||
|
{
|
||
|
Debug.Assert(handlingBody, this);
|
||
|
|
||
|
magnet.strength = magnetStrength;
|
||
|
|
||
|
crane.testTgt = handlingBody.transform;
|
||
|
if (Vector3.Distance(handlingBody.position, magnet.transform.position) < 1f)
|
||
|
{
|
||
|
crane.testTgt = dropTarget;
|
||
|
state = State.Tansporting;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (state == State.Tansporting)
|
||
|
{
|
||
|
if (magnet.IsCloseToPlanar(dropTarget))
|
||
|
{
|
||
|
magnet.strength = 0;
|
||
|
state = State.Idle;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|