Ejemplo n.º 1
0
 override public void Release(TouchHitInfo hitInfo)
 {
     if (hitAudioSource != null && stopOnRelease && ShouldPlay())
     {
         hitAudioSource.Stop();
     }
 }
Ejemplo n.º 2
0
    void Trigger()
    {
        Ray        ray = new Ray(triggerSource.position, triggerSource.forward);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            Collider  hitCollider = hit.collider;
            Rigidbody hitBody     = hit.rigidbody;

            if (hitCollider)
            {
                HitTarget[]  targets = hitCollider.GetComponents <HitTarget>();
                TouchHitInfo info    = new TouchHitInfo();
                info.hitTargets     = targets;
                info.player         = playerTransform;
                info.touchSource    = triggerSource;
                info.startDirection = ray.direction;
                info.lastDirection  = ray.direction;
                info.curDirection   = ray.direction;
                info.distance       = hit.distance;

                foreach (HitTarget target in targets)
                {
                    target.Hit(info);
                }
                currentHit = info;
            }
        }
    }
Ejemplo n.º 3
0
    void ReceiveTouchBegin(Vector2 position, int id)
    {
        Ray        ray = GetCameraRay(position);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            Collider  hitCollider = hit.collider;
            Rigidbody hitBody     = hit.rigidbody;

            if (hitCollider)
            {
                HitTarget[] targets = hitCollider.GetComponents <HitTarget>();

                TouchHitInfo info = new TouchHitInfo();
                info.hitTargets     = targets;
                info.player         = playerTransform;
                info.touchSource    = cameraComponent.transform;
                info.hitPoint       = hit.point;
                info.startDirection = ray.direction;
                info.lastDirection  = ray.direction;
                info.curDirection   = ray.direction;
                info.distance       = (hitCollider.transform.position - cameraComponent.transform.position).magnitude;
                currentHits[id]     = info;
                hitOrder.Add(info);

                foreach (HitTarget target in targets)
                {
                    target.Hit(info);
                }
            }
        }
    }
Ejemplo n.º 4
0
 override public void Hit(TouchHitInfo hitInfo)
 {
     numHits++;
     if (explodeOnlyOnHit == 0 || numHits == explodeOnlyOnHit)
     {
         Explode();
     }
 }
Ejemplo n.º 5
0
 override public void Hit(TouchHitInfo hitInfo)
 {
     numHits++;
     numHolding++;
     animator.SetTrigger("Hit");
     animator.SetInteger("NumHits", numHits);
     animator.SetBool("Holding", true);
 }
Ejemplo n.º 6
0
 override public void Hit(TouchHitInfo hitInfo)
 {
     numHits++;
     if (destroyOnlyOnHit == 0 || numHits == destroyOnlyOnHit)
     {
         Destroy(this.gameObject);
     }
 }
Ejemplo n.º 7
0
    override public void Hit(TouchHitInfo hitInfo)
    {
        numHits++;

        if (hitAudioSource != null && ShouldPlay())
        {
            hitAudioSource.Play();
        }
    }
Ejemplo n.º 8
0
    override public void Release(TouchHitInfo hitInfo)
    {
        numReleases++;

        if (releaseAudioSource != null && ShouldPlay())
        {
            releaseAudioSource.Play();
        }
    }
Ejemplo n.º 9
0
    override public void Hit(TouchHitInfo hitInfo)
    {
        numHits++;

        if (toEnable != null && ShouldEnable())
        {
            EnableObject();
        }
    }
Ejemplo n.º 10
0
    override public void Hit(TouchHitInfo hitInfo)
    {
        numHits++;

        if (prefab != null && ShouldCreate())
        {
            Create();
        }
    }
Ejemplo n.º 11
0
    void Release()
    {
        foreach (HitTarget hit in currentHit.hitTargets)
        {
            hit.Release(currentHit);
        }

        currentHit = null;
    }
Ejemplo n.º 12
0
    override public void Move(TouchHitInfo hitInfo)
    {
        Ray        ray = new Ray(hitInfo.touchSource.position, hitInfo.curDirection);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            MoveTo(hit.point);
        }
    }
Ejemplo n.º 13
0
    override public void PinchMove(TouchHitInfo hitInfoMoved, TouchHitInfo hitInfoStill)
    {
        float   distance  = Mathf.Max(hitInfoMoved.distance, hitInfoStill.distance);
        Vector3 lastDelta = distance * (hitInfoMoved.lastDirection - hitInfoStill.curDirection);
        Vector3 curDelta  = distance * (hitInfoMoved.curDirection - hitInfoStill.curDirection);

        if (scale)
        {
            transform.localScale = (curDelta.magnitude / lastDelta.magnitude) * transform.localScale;
        }
        if (rotate)
        {
            transform.rotation = Quaternion.FromToRotation(lastDelta, curDelta) * transform.rotation;
        }
    }
Ejemplo n.º 14
0
    override public void Move(TouchHitInfo hitInfo)
    {
        Vector3 delta = hitInfo.distance * (hitInfo.curDirection - hitInfo.lastDirection);

        transform.position += delta;

        Vector3 offset = transform.position - hitInfo.touchSource.position;

        offset             = hitInfo.distance * offset.normalized;
        transform.position = hitInfo.touchSource.position + offset;

        if (rotate)
        {
            Quaternion rotation = Quaternion.LookRotation(hitInfo.curDirection) *
                                  Quaternion.Inverse(Quaternion.LookRotation(hitInfo.lastDirection));
            transform.rotation = rotation * transform.rotation;
        }
    }
Ejemplo n.º 15
0
    override public void Move(TouchHitInfo hitInfo)
    {
        Quaternion rotation = Quaternion.LookRotation(hitInfo.curDirection) *
                              Quaternion.Inverse(Quaternion.LookRotation(hitInfo.lastDirection));
        Vector3 euler = rotation.eulerAngles;

        if (!xAxis)
        {
            euler.x = 0.0f;
        }
        if (!yAxis)
        {
            euler.y = 0.0f;
        }
        if (!zAxis)
        {
            euler.z = 0.0f;
        }
        toRotate.rotation = Quaternion.Euler(euler) * transform.rotation;
    }
Ejemplo n.º 16
0
    void ReceiveTouchMove(Vector2 position, int id)
    {
        if (!currentHits.ContainsKey(id))
        {
            return;
        }

        Ray          ray  = GetCameraRay(position);
        TouchHitInfo info = currentHits[id];

        info.lastDirection = info.curDirection;
        info.curDirection  = ray.direction;

        HitTarget[] targets = info.hitTargets;
        foreach (HitTarget target in targets)
        {
            if (target)
            {
                target.Move(info);
            }
        }

        foreach (TouchHitInfo otherHit in hitOrder)
        {
            if (otherHit != info && otherHit.hitTargets[0] == info.hitTargets[0])
            {
                foreach (HitTarget target in targets)
                {
                    if (target)
                    {
                        target.PinchMove(info, otherHit);
                    }
                }
            }
        }

        currentHits[id] = info;
    }
Ejemplo n.º 17
0
 override public void Hit(TouchHitInfo hitInfo)
 {
     SceneManager.LoadScene(levelToLoad);
 }
Ejemplo n.º 18
0
 override public void Release(TouchHitInfo hitInfo)
 {
     numHolding--;
     animator.SetTrigger("Release");
     animator.SetBool("Holding", numHolding != 0);
 }
Ejemplo n.º 19
0
 override public void Release(TouchHitInfo hitInfo)
 {
 }
Ejemplo n.º 20
0
 virtual public void Hit(TouchHitInfo hitInfo)
 {
 }
Ejemplo n.º 21
0
 virtual public void PinchMove(TouchHitInfo hitInfoMoved, TouchHitInfo hitInfoStill)
 {
 }
Ejemplo n.º 22
0
 virtual public void Move(TouchHitInfo hitInfo)
 {
 }
Ejemplo n.º 23
0
 virtual public void Release(TouchHitInfo hitInfo)
 {
 }
Ejemplo n.º 24
0
 override public void Hit(TouchHitInfo hitInfo)
 {
     MoveTo(hitInfo.hitPoint);
 }
Ejemplo n.º 25
0
 override public void Hit(TouchHitInfo hitInfo)
 {
     hitInfo.player.position = transform.position;
 }