示例#1
0
        /// 初期化
        public override bool DoInit()
        {
            shapeMove = null;

            shapeMove = new ShapeSphere();
            shapeMove.Init(1);
            shapeMove.Set(0, StaticDataList.getVectorZero(), 0.4f);

            shapeColl = new ShapeCapsule();
            shapeColl.Init(1);
            shapeColl.Set(0, StaticDataList.getVectorZero(), new Vector3(0.0f, 2.0f, 0.0f), (float)Data.SetupValue.TitanSize);

            shapeCollforDis = new ShapeCapsule();
            shapeCollforDis.Init(1);
            shapeCollforDis.Set(0, StaticDataList.getVectorZero(), new Vector3(0.0f, 2.0f, 0.0f), (float)Data.SetupValue.TouchSize);

            appearCount = 30;
            glowCounter = 0;
            scale       = (int)Data.SetupValue.WallScale / 100.0f;

            farFlag = false;

            distance = Common.VectorUtil.DistanceXZ(pos1, pos2);
            angle    = FMath.Atan((pos1.X - pos2.X) / (pos1.Z - pos2.Z)) + FMath.PI / 2;

            return(true);
        }
示例#2
0
        private Matrix4 CalcSpriteMatrix(Vector3 cameraPosition, Vector3 myPosition)
        {
//		myPosition.Y -= 7.3f;
            myPosition.Y += 2.3f;

            var transMatrix = Matrix4.Translation(myPosition);
            var subPosition = cameraPosition - myPosition;
            var scaleMatrix = Matrix4.Scale(new Vector3(scale, scale, scale));

            Matrix4 rotMatrix;

            rotMatrix = Matrix4.RotationZ(FMath.PI);
            if (cameraPosition.Z < myPosition.Z)
            {
                rotMatrix *= Matrix4.RotationY(-FMath.Atan(subPosition.X / subPosition.Z));
//			rotMatrix *= Matrix4.RotationX(angle);
            }
            else
            {
                rotMatrix *= Matrix4.RotationY(-FMath.Atan(subPosition.X / subPosition.Z) + FMath.PI);
            }

            Matrix4 centerMatrix;
//		if(appearCount != 0){-subPosition.Z/3.0f
            Matrix4 rotMatrixZ;

            centerMatrix = Matrix4.Translation(new Vector3(-sprite.CenterX, -sprite.CenterY, 0.0f));
            rotMatrixZ   = Matrix4.RotationX(angle);
            rotMatrixZ  *= Matrix4.Translation(new Vector3(0.0f, -30.0f, 0.0f));
            return(transMatrix * rotMatrix * scaleMatrix * centerMatrix * rotMatrixZ);
//		}else{
//		    centerMatrix = Matrix4.Translation(new Vector3(-sprite.CenterX,-sprite.CenterY*4.4f, 0.0f));
//		    return transMatrix * rotMatrix * scaleMatrix * centerMatrix;
//		}
        }
示例#3
0
        private void CalcSpriteMatrix(Vector3 cameraPosition, Vector3 myPosition)
        {
            var subPosition = cameraPosition - myPosition;

            Common.VectorUtil.Set(ref BodyPos, myPosition.X, myPosition.Y, myPosition.Z);

            if (moveAngle == true)
            {
                if (cameraPosition.Z < myPosition.Z)
                {
                    rotation.X = -FMath.Atan(subPosition.X / subPosition.Z);
                }
                else
                {
                    rotation.X = -FMath.Atan(subPosition.X / subPosition.Z) + FMath.PI;
                }
            }
            else
            {
                if (cameraPosition.Z < myPosition.Z)
                {
                    rotation.X = -FMath.Atan(subPosition.X / subPosition.Z) + FMath.PI;
                }
                else
                {
                    rotation.X = -FMath.Atan(subPosition.X / subPosition.Z);
                }
            }

            if (deadflag == true || changeFlag == true)
            {
                if (appearCount < (int)Data.SetupValue.AppearAndLeaveTime)
                {
                    appearCount++;
                }
                else
                {
                    appearCount = (int)Data.SetupValue.AppearAndLeaveTime;
                }
            }
            else
            {
                if (appearCount > 0)
                {
                    appearCount--;
                }
                else
                {
                    appearCount = 0;
                }
            }

            rotation.Y = FMath.PI / 2 * appearCount / (int)Data.SetupValue.AppearAndLeaveTime;
        }
示例#4
0
        public void TestAtan()
        {
            var a = Fixed.FromInt(14);
            var r = Fixed.FromFloat(1.4994888f);

            AssertApproximately(r, FMath.Atan(a));

            a = Fixed.FromFloat(-0.154787f);
            r = Fixed.FromFloat(-0.153568f);
            AssertApproximately(r, FMath.Atan(a));

            a = Fixed.FromFloat(0.7547870f);
            r = Fixed.FromFloat(0.6465577f);
            AssertApproximately(r, FMath.Atan(a));
        }
示例#5
0
        private void CalcSpriteMatrix(Vector3 cameraPosition, Vector3 myPosition)
        {
            var subPosition = cameraPosition - myPosition;

            Common.VectorUtil.Set(ref BodyPos, myPosition.X, myPosition.Y, myPosition.Z);

            if (cameraPosition.Z < myPosition.Z)
            {
                rotation.X = -FMath.Atan(subPosition.X / subPosition.Z) + FMath.PI;
            }
            else
            {
                rotation.X = -FMath.Atan(subPosition.X / subPosition.Z);
            }

            if (deadflag == true || changeFlag == true || farFlag == true)
            {
                if (appearCount < (int)Data.SetupValue.AppearAndLeaveTime)
                {
                    appearCount++;
                }
                else
                {
                    if (deadflag == true)               //最初の状態に戻してる
                    {
                        deadflag    = false;
                        glowFinish  = false;
                        glowNumber  = 0;
                        glowCounter = 0;
                        startforChange((int)Data.Tex2dResId.MakingWall1);
                    }
                    appearCount = (int)Data.SetupValue.AppearAndLeaveTime;
                }
            }
            else
            {
                if (appearCount > 0)
                {
                    appearCount--;
                }
                else
                {
                    appearCount = 0;
                }
            }

            rotation.Y = FMath.PI / 2 * appearCount / (int)Data.SetupValue.AppearAndLeaveTime;
        }
示例#6
0
        private void CalcSpriteMatrix(Vector3 cameraPosition, Vector3 myPosition)
        {
            /*
             * if(TexIdForText < 3){
             * myPosition.Y += 3.0f;
             * }else if(TexIdForText == 3){
             * myPosition.Y += 6.0f;
             * myPosition.X += 2.0f;
             * myPosition.Z += 1.0f;
             * }
             */

            var subPosition = cameraPosition - myPosition;

            if (cameraPosition.Z < myPosition.Z)
            {
                rotation.X = -FMath.Atan(subPosition.X / subPosition.Z) + FMath.PI;
            }
            else
            {
                rotation.X = -FMath.Atan(subPosition.X / subPosition.Z);
            }

            if (preDeadflag == true)
            {
                appearCount++;
                if (TexIdForText < (int)Data.Tex2dResId.NormalCharMax)
                {
                    if (appearCount == (int)Data.SetupValue.AppearAndLeaveTime && deadFlag == false)
                    {
                        deadFlag = true;
                        ctrlResMgr.CtrlHobit.speakCount--;
                    }
                }
                else if (TexIdForText == (int)Data.Tex2dResId.Zonbi1)
                {
                    if (appearCount == (int)Data.SetupValue.GionAppearSpeed && deadFlag == false)
                    {
                        deadFlag = true;
                        ctrlResMgr.CtrlHobit.speakCount--;
                    }
                }
            }
            else
            {
                if (appearCount > 0)
                {
                    appearCount--;
                }
            }

            if (appearCount != 0)
            {
                if (TexIdForText < (int)Data.Tex2dResId.NormalCharMax)
                {
                    rotation.Y = FMath.PI / 2 * appearCount / (int)Data.SetupValue.AppearAndLeaveTime;
                    ObjTex.setangle(FMath.PI / 2 * appearCount / (int)Data.SetupValue.AppearAndLeaveTime);
                }
                else if (TexIdForText == (int)Data.Tex2dResId.Zonbi1)
                {
                    rotation.Y = FMath.PI / 2 * appearCount / (int)Data.SetupValue.GionAppearSpeed;
                }
            }
        }
示例#7
0
        private Matrix4 CalcSpriteMatrix(Vector3 cameraPosition, Vector3 myPosition)
        {
//		myPosition.Z += 5.0f;
            myPosition.Y += texCenter.Y * scale;
            var transMatrix = Matrix4.Translation(myPosition);
            var subPosition = cameraPosition - myPosition;
            var scaleMatrix = Matrix4.Scale(new Vector3(scale, scale, scale));

//		myRotation.Y = FMath.Atan(subPosition.X/subPosition.Z);
//      var rotMatrix = Matrix4.RotationXyz(new Vector3(0.0f,FMath.Atan(subPosition.X/subPosition.Z),0.0f));
            Common.VectorUtil.Set(ref BodyPos, myPosition.X, myPosition.Y, myPosition.Z);

            Matrix4 rotMatrix;

            rotMatrix = Matrix4.RotationZ(FMath.PI);
            if (cameraPosition.Z < myPosition.Z)
            {
                rotMatrix *= Matrix4.RotationY(-FMath.Atan(subPosition.X / subPosition.Z) + FMath.PI);
            }
            else
            {
                rotMatrix *= Matrix4.RotationY(-FMath.Atan(subPosition.X / subPosition.Z));
            }

            Matrix4 rotMatrixZ;

            if (deadflag == true || changeFlag == true || farFlag == true)
            {
                if (appearCount < (int)Data.SetupValue.AppearAndLeaveTime)
                {
                    appearCount++;
                }
                else
                {
                    if (deadflag == true)
                    {
                        deadflag    = false;
                        glowFinish  = false;
                        glowNumber  = 0;
                        glowCounter = 0;
                        startforChange((int)Data.Tex2dResId.MakingWall1);
                    }
                    appearCount = (int)Data.SetupValue.AppearAndLeaveTime;
                }
            }
            else
            {
                if (appearCount > 0)
                {
                    appearCount--;
                }
                else
                {
                    appearCount = 0;
                }
            }

            Matrix4 centerMatrix;

            if (appearCount != 0)
            {
                centerMatrix = Matrix4.Translation(new Vector3(-texCenter.X, texCenter.Y, 0.0f));
                rotMatrixZ   = Matrix4.RotationX(FMath.PI / 2 * -appearCount / (int)Data.SetupValue.AppearAndLeaveTime);
                rotMatrixZ  *= Matrix4.Translation(new Vector3(0.0f, -texCenter.Y * 2, 0.0f));
                return(transMatrix * rotMatrix * scaleMatrix * centerMatrix * rotMatrixZ);
            }
            else
            {
                centerMatrix = Matrix4.Translation(new Vector3(-texCenter.X, -texCenter.Y, 0.0f));
                return(transMatrix * rotMatrix * scaleMatrix * centerMatrix);
            }
        }
示例#8
0
        private Matrix4 CalcSpriteMatrix(Vector3 cameraPosition, Vector3 myPosition)
        {
            if (TexIdForText < 3)
            {
                myPosition.Y += 3.0f;
            }
            else if (TexIdForText == 3)
            {
                myPosition.Y += 6.0f;
                myPosition.X += 2.0f;
                myPosition.Z += 1.0f;
            }
            var transMatrix = Matrix4.Translation(myPosition);
            var subPosition = cameraPosition - myPosition;

            Matrix4 rotMatrix;

            rotMatrix = Matrix4.RotationZ(FMath.PI);
            if (cameraPosition.Z < myPosition.Z)
            {
                rotMatrix *= Matrix4.RotationY(-FMath.Atan(subPosition.X / subPosition.Z));
            }
            else
            {
                rotMatrix *= Matrix4.RotationY(-FMath.Atan(subPosition.X / subPosition.Z) + FMath.PI);
            }

            Matrix4 rotMatrixZ;

            if (TexIdForText != 3)
            {
                if (deadflag2 == true)
                {
                    appearCount++;
                    if (appearCount == (int)Data.SetupValue.AppearAndLeaveTime)
                    {
                        deadflag = true;
                    }
                }
                else
                {
                    if (appearCount > 0)
                    {
                        appearCount--;
                    }
                }
            }
            else if (TexIdForText == 3)
            {
                if (deadflag2 == true)
                {
                    appearCount++;
                    if (appearCount == (int)Data.SetupValue.GionAppearSpeed)
                    {
                        deadflag = true;
                    }
                }
                else
                {
                    if (appearCount > 0)
                    {
                        appearCount--;
                    }
                }
            }

            Matrix4 scaleMatrix = new Matrix4();

            if (TexIdForText < 3)
            {
                scaleMatrix = Matrix4.Scale(new Vector3(ObjTex.scaleX * scale, scale, scale));
            }
            else if (TexIdForText == 3)
            {
                scaleMatrix = Matrix4.Scale(new Vector3(scale, scale, scale));
            }

            Matrix4 centerMatrix;

            if (TexIdForText != 3)
            {
                if (appearCount != 0)
                {
                    centerMatrix = Matrix4.Translation(new Vector3(-texCenter.X, texCenter.Y, 0.0f));
                    rotMatrixZ   = Matrix4.RotationX(FMath.PI / 2 * -appearCount / (int)Data.SetupValue.AppearAndLeaveTime);
                    if (TexIdForText < 3)
                    {
                        ObjTex.setangle(FMath.PI / 2 * -appearCount / (int)Data.SetupValue.AppearAndLeaveTime);
                    }
                    rotMatrixZ *= Matrix4.Translation(new Vector3(0.0f, -texCenter.Y * 2, 0.0f));
                    return(transMatrix * rotMatrix * scaleMatrix * centerMatrix * rotMatrixZ);
                }
                else
                {
                    centerMatrix = Matrix4.Translation(new Vector3(-texCenter.X, -texCenter.Y, 0.0f));
                    if (TexIdForText < 3)
                    {
                        ObjTex.setangle(0);
                    }
                    return(transMatrix * rotMatrix * scaleMatrix * centerMatrix);
                }
            }
            else
            {
                if (appearCount != 0)
                {
                    centerMatrix = Matrix4.Translation(new Vector3(-texCenter.X, texCenter.Y, 0.0f));
                    rotMatrixZ   = Matrix4.RotationX(FMath.PI / 2 * -appearCount / (int)Data.SetupValue.AppearAndLeaveTime);
                    if (TexIdForText < 3)
                    {
                        ObjTex.setangle(FMath.PI / 2 * -appearCount / (int)Data.SetupValue.GionAppearSpeed);
                    }
                    rotMatrixZ *= Matrix4.Translation(new Vector3(0.0f, -texCenter.Y * 2, 0.0f));
                    return(transMatrix * rotMatrix * scaleMatrix * centerMatrix * rotMatrixZ);
                }
                else
                {
                    centerMatrix = Matrix4.Translation(new Vector3(-texCenter.X, -texCenter.Y, 0.0f));
                    if (TexIdForText < 3)
                    {
                        ObjTex.setangle(0);
                    }
                    return(transMatrix * rotMatrix * scaleMatrix * centerMatrix);
                }
            }
        }