Esempio n. 1
0
        /// チェック
        public bool Check( GameActorCollManager collMgr, DemoGame.GeometryLine moveMoveLine )
        {
            collMgr.StartCollision();

            for( int i=0; i<collMgr.TrgContainer.Num; i++ ){

            GameObjProduct trgObj = collMgr.TrgContainer.GetEntryObj( i );

            for( int x=0; x<trgObj.GetCollisionShapeMax(moveType); x++ ){

                GameShapeProduct trgShape = trgObj.GetCollisionShape( moveType, x );

                /// 衝突
                if( calCollPointMove.Check( moveMoveLine, trgShape ) ){
                    collMgr.SetCollParam( i, x, calCollPointMove.BestId, calCollPointMove.BestDis );
                }
            }
            }

            /// 衝突座標をセット
            setScrapedMovePos( collMgr, moveMoveLine );

            /// 衝突した
            return collMgr.CheckCollHit();
        }
Esempio n. 2
0
        /// チェック
        public bool Check(GameActorCollManager collMgr, DemoGame.GeometryLine moveMoveLine)
        {
            collMgr.StartCollision();

            for (int i = 0; i < collMgr.TrgContainer.Num; i++)
            {
                GameObjProduct trgObj = collMgr.TrgContainer.GetEntryObj(i);

                for (int x = 0; x < trgObj.GetCollisionShapeMax(moveType); x++)
                {
                    GameShapeProduct trgShape = trgObj.GetCollisionShape(moveType, x);

                    /// 衝突
                    if (calCollPointMove.Check(moveMoveLine, trgShape))
                    {
                        collMgr.SetCollParam(i, x, calCollPointMove.BestId, calCollPointMove.BestDis);
                    }
                }
            }

            /// 衝突座標をセット
            setScrapedMovePos(collMgr, moveMoveLine);

            /// 衝突した
            return(collMgr.CheckCollHit());
        }
Esempio n. 3
0
        /// チェック
        public bool Check(GameActorCollManager collMgr, Vector3 movePos)
        {
            ShapeSphere moveSph = (ShapeSphere)collMgr.MoveShape;

            moveMoveCap.Set(moveSph.Sphre.Pos, movePos, moveSph.Sphre.R);

            collMgr.StartCollision();

            for (int i = 0; i < collMgr.TrgContainer.Num; i++)
            {
                GameObjProduct trgObj = collMgr.TrgContainer.GetEntryObj(i);

                for (int x = 0; x < trgObj.GetCollisionShapeMax(moveType); x++)
                {
                    GameShapeProduct trgShape = trgObj.GetCollisionShape(moveType, x);

                    bool hitFlg = false;

                    switch (trgShape.GetShapeType())
                    {
                    /// 三角形
                    case GameShapeProduct.TypeId.Triangles:
                        hitFlg = calCollSphMove.Check(moveMoveCap, (ShapeTriangles)trgShape);
                        break;

                    /// カプセル
                    case GameShapeProduct.TypeId.Capsule:
                        hitFlg = calCollSphMove.Check(moveMoveCap, (ShapeCapsule)trgShape);
                        break;
                    }

                    /// 衝突
                    if (hitFlg)
                    {
                        collMgr.SetCollParam(i, x, calCollSphMove.BestId, calCollSphMove.BestDis);
                        if (moveType == Data.CollTypeId.ChMove)
                        {
                            trgObj.deadFlag = true;
                        }
                    }
                }
            }

            /// 衝突後の移動座標をセット
            setScrapedMovePos(collMgr, movePos);

            /// 衝突した
            return(collMgr.CheckCollHit());
        }
Esempio n. 4
0
        /// チェック
        public bool Check( GameActorCollManager collMgr, Vector3 movePos )
        {
            ShapeSphere moveSph = (ShapeSphere)collMgr.MoveShape;

            moveMoveCap.Set( moveSph.Sphre.Pos, movePos, moveSph.Sphre.R );

            collMgr.StartCollision();

            for( int i=0; i<collMgr.TrgContainer.Num; i++ ){

            GameObjProduct trgObj = collMgr.TrgContainer.GetEntryObj( i );

            for( int x=0; x<trgObj.GetCollisionShapeMax(moveType); x++ ){

                GameShapeProduct trgShape = trgObj.GetCollisionShape( moveType, x );

                bool hitFlg = false;

                switch( trgShape.GetShapeType() ){

                /// 三角形
                case GameShapeProduct.TypeId.Triangles:
                    hitFlg = calCollSphMove.Check( moveMoveCap, (ShapeTriangles)trgShape );
                    break;

                /// カプセル
                case GameShapeProduct.TypeId.Capsule:
                    hitFlg = calCollSphMove.Check( moveMoveCap, (ShapeCapsule)trgShape );
                    break;
                }

                /// 衝突
                if( hitFlg ){
                    collMgr.SetCollParam( i, x, calCollSphMove.BestId, calCollSphMove.BestDis );
                    if(moveType == Data.CollTypeId.ChMove){
                        trgObj.deadFlag = true;
                    }
                }
            }
            }

            /// 衝突後の移動座標をセット
            setScrapedMovePos( collMgr, movePos );

            /// 衝突した
            return collMgr.CheckCollHit();
        }