Beispiel #1
0
    /// <summary>
    /// セットアップ
    /// </summary>
    public void Setup(Fish fish, FishColliderData colliderData)
    {
        this.fish = fish;
        this.parentRect = (RectTransform)this.rectTransform.parent;

        //コライダ設置先
        Transform colliderPlacement = null;

        if (!string.IsNullOrEmpty(colliderData.placementName))
        {
            //コライダ設置先の検索
            colliderPlacement = this.fish.model
                .GetComponentsInChildren<Transform>()
                .FirstOrDefault(child => child.name == colliderData.placementName);
        }

        if (colliderPlacement == null)
        {
            //基本はFBXのルートがコライダ設置先
            colliderPlacement = this.fish.cachedModelTransform;
        }

        //コライダ設置
        this.boxCollider = colliderPlacement.gameObject.AddComponent<BoxCollider>();
        this.boxCollider.center = colliderData.center;
        this.boxCollider.size = colliderData.size;
        this.boxColliderPoints = Instantiate(this.boxColliderPointsPrefab, colliderPlacement, false);
    }
// ===========================================================================================================================================================
// Intersection functions

        static bool IsPointInBoxCollider(ref Vector point, ref BoxColliderPoints rect)
        {
            var ap = point - rect.a;
            var ab = rect.b - rect.a;
            var ad = rect.d - rect.a;

            var apab = ap.Dot(ab);
            var abab = ab.Dot(ab);
            var apad = ap.Dot(ad);
            var adad = ad.Dot(ad);

            return(0 <= apab && apab <= abab && 0 <= apad && apad <= adad);
        }