override public void Release(TouchHitInfo hitInfo) { if (hitAudioSource != null && stopOnRelease && ShouldPlay()) { hitAudioSource.Stop(); } }
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; } } }
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); } } } }
override public void Hit(TouchHitInfo hitInfo) { numHits++; if (explodeOnlyOnHit == 0 || numHits == explodeOnlyOnHit) { Explode(); } }
override public void Hit(TouchHitInfo hitInfo) { numHits++; numHolding++; animator.SetTrigger("Hit"); animator.SetInteger("NumHits", numHits); animator.SetBool("Holding", true); }
override public void Hit(TouchHitInfo hitInfo) { numHits++; if (destroyOnlyOnHit == 0 || numHits == destroyOnlyOnHit) { Destroy(this.gameObject); } }
override public void Hit(TouchHitInfo hitInfo) { numHits++; if (hitAudioSource != null && ShouldPlay()) { hitAudioSource.Play(); } }
override public void Release(TouchHitInfo hitInfo) { numReleases++; if (releaseAudioSource != null && ShouldPlay()) { releaseAudioSource.Play(); } }
override public void Hit(TouchHitInfo hitInfo) { numHits++; if (toEnable != null && ShouldEnable()) { EnableObject(); } }
override public void Hit(TouchHitInfo hitInfo) { numHits++; if (prefab != null && ShouldCreate()) { Create(); } }
void Release() { foreach (HitTarget hit in currentHit.hitTargets) { hit.Release(currentHit); } currentHit = null; }
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); } }
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; } }
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; } }
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; }
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; }
override public void Hit(TouchHitInfo hitInfo) { SceneManager.LoadScene(levelToLoad); }
override public void Release(TouchHitInfo hitInfo) { numHolding--; animator.SetTrigger("Release"); animator.SetBool("Holding", numHolding != 0); }
override public void Release(TouchHitInfo hitInfo) { }
virtual public void Hit(TouchHitInfo hitInfo) { }
virtual public void PinchMove(TouchHitInfo hitInfoMoved, TouchHitInfo hitInfoStill) { }
virtual public void Move(TouchHitInfo hitInfo) { }
virtual public void Release(TouchHitInfo hitInfo) { }
override public void Hit(TouchHitInfo hitInfo) { MoveTo(hitInfo.hitPoint); }
override public void Hit(TouchHitInfo hitInfo) { hitInfo.player.position = transform.position; }