/// 初期化 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); }
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; // } }
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; }
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)); }
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; }
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; } } }
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); } }
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); } } }