コード例 #1
0
        public override void Active()
        {
            base.Active();
            //TODO 更新コンテナに自分を入れる

            //DamageAreaの設置
            startPosition = BezierStage.GetControllPointPosition(startPoint_LB[0], startPoint_LB[1] + 1);
            endPosition   = BezierStage.GetControllPointPosition(startPoint_LB[0], startPoint_LB[1] + 7);
            Vector2 damageAreaRY = BezierStage.GetControllPointPosition(startPoint_LB[0], startPoint_LB[1] + 4);

            Vector2 damageAreaSize = new Vector2(
                endPosition.X - startPosition.X,
                damageAreaRY.Y - startPosition.Y);

            damageArea = new C_Collider_PointInHintArea("WastelandDamage", startPosition + damageAreaSize / 2, damageAreaSize);
            damageArea.Active();
            TaskManager.AddTask(damageArea);

            //Route生成用エリアの設置
            Vector2 createRouteAreaLT = BezierStage.GetControllPointPosition(startPoint_LB[0], startPoint_LB[1] + 1);
            Vector2 createRouteAreaRB = BezierStage.GetControllPointPosition(startPoint_LB[0], startPoint_LB[1] + 7);

            createRouteAreaLT.Y -= 50;
            Vector2 createRouteAreaSize = createRouteAreaRB - createRouteAreaLT;

            createRouteArea = new C_Collider_Square("CanCreateRoute", createRouteAreaLT + createRouteAreaSize / 2, createRouteAreaSize);
            createRouteArea.Active();
            TaskManager.AddTask(createRouteArea);


            //ChildControll用エリア設置
            C_Collider_PointInHintArea childJump1 = new C_Collider_PointInHintArea("ChildJump", startPosition, Vector2.One * 60);
            C_Collider_PointInHintArea childJump2 = new C_Collider_PointInHintArea("ChildJump", endPosition, Vector2.One * 60);

            childJump1.Active();
            childJump2.Active();
            TaskManager.AddTask(childJump1);
            TaskManager.AddTask(childJump2);

            stopRight = new C_Collider_PointInHintArea("ChildStopR", startPosition, Vector2.One * 100);
            stopLeft  = new C_Collider_PointInHintArea("ChildStopL", endPosition, Vector2.One * 100);
            stopRight.Active();
            stopLeft.Active();
            TaskManager.AddTask(stopRight);
            TaskManager.AddTask(stopLeft);
        }
コード例 #2
0
ファイル: CollitionCheck.cs プロジェクト: Shien007/Season
        public static bool CircleSquare(C_Collider_Square square, C_Collider_Circle circle)
        {
            bool isCollide = false;

            for (int i = 0; i < square.points.Count; i++)
            {
                Vector2 centre = circle.centerPosition;
                float   radius = circle.radius;

                int     nextIndex = (int)Method.Warp(0, square.points.Count, i + 1);
                Vector2 thisPoint = square.points[i];
                Vector2 nextPoint = square.points[nextIndex];
                Vector2 normal    = Vector2.Zero;

                isCollide = Method.CircleSegment(ref centre, radius, thisPoint, nextPoint, ref normal);
                if (isCollide)
                {
                    return(isCollide);
                }
            }
            return(isCollide);
        }