当前位置: 首页>>代码示例>>C#>>正文


C# Vector3D.GetMagnitudeSquared方法代码示例

本文整理汇总了C#中Vector3D.GetMagnitudeSquared方法的典型用法代码示例。如果您正苦于以下问题:C# Vector3D.GetMagnitudeSquared方法的具体用法?C# Vector3D.GetMagnitudeSquared怎么用?C# Vector3D.GetMagnitudeSquared使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Vector3D的用法示例。


在下文中一共展示了Vector3D.GetMagnitudeSquared方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ProcessPlayerInput


//.........这里部分代码省略.........
				newRotation.Y -= moveunit*2F;
			}
			if(keyboard.GetKeyState(Key.key_E)) 
			{
				newRotation.Y += moveunit*2F;
			}

			#endregion
			#region 2.0 Process Movement Input


			Vector3D changeOfPosition = new Vector3D( 0, 0, 0 );
			if ( keyboard.GetKeyState(Key.key_W) ) 
			{
				changeOfPosition.X += (float)Math.Sin( newRotation.Y * Math.PI/180.0 ) * moveunit;
				changeOfPosition.Z += (float)Math.Cos( newRotation.Y * Math.PI/180.0 ) * moveunit;
			}
			if ( keyboard.GetKeyState(Key.key_S) ) 
			{
				changeOfPosition.X -= (float)Math.Sin( newRotation.Y * Math.PI/180.0 ) * moveunit/2F;
				changeOfPosition.Z -= (float)Math.Cos( newRotation.Y * Math.PI/180.0 ) * moveunit/2F;
			}
			if ( keyboard.GetKeyState(Key.key_D) ) 
			{
				changeOfPosition.X += (float)Math.Cos( newRotation.Y * Math.PI/180.0 ) * moveunit/2F;
				changeOfPosition.Z -= (float)Math.Sin( newRotation.Y * Math.PI/180.0 ) * moveunit/2F;
			}
			if( keyboard.GetKeyState(Key.key_A) ) 
			{
				changeOfPosition.X -=	(float)Math.Cos( newRotation.Y * Math.PI/180.0 ) * moveunit/2F;
				changeOfPosition.Z +=	(float)Math.Sin( newRotation.Y * Math.PI/180.0 ) * moveunit/2F;
			}

			if( changeOfPosition.GetMagnitudeSquared() != 0 ) 
			{
				// stay on the ground
				// TODO: What about when walking on objects?
				Vector3D newPosition = avatarPosition + changeOfPosition;
				try 
				{
					newPosition.Y = 
						Game.CurrentWorld.TerrainPieces.AltitudeAt( newPosition.X, newPosition.Z ) + Game.CurrentWorld.CurrentAvatar.physicalObject.Height/2;
						//Game.CurrentWorld.WorldTerrain.HeightLookup( newPosition.X, newPosition.Z ) + Game.CurrentWorld.CurrentAvatar.physicalObject.Height/2;
					changeOfPosition.Y = newPosition.Y - avatarPosition.Y;

					// check that we can go there
					foreach ( PhysicalObjectInstance poi in Game.CurrentWorld.physicalObjectInstances.Values ) 
					{
						if ( poi.physicalObject is Terrain ) 
						{
							continue;
						}
						if ( poi == Game.CurrentWorld.CurrentAvatar ) 
						{
							//ignore ourselves
							continue;
						}

						// do a bounding sphere test to see if the movement will go near poi
						// test from the middle of the line drawn between current position
						// and future position, distance is the radius of both objects
						// plus half the distance of the movement.
						float dx = avatarPosition.X + changeOfPosition.X / 2F - poi.model.Position.X;
						float dy = avatarPosition.Y + changeOfPosition.Y / 2F - poi.model.Position.Y;
						float dz = avatarPosition.Z + changeOfPosition.Z / 2F - poi.model.Position.Z;
						float distance_squared = dx*dx + dy*dy + dz*dz;
开发者ID:628426,项目名称:Strive.NET,代码行数:67,代码来源:GameLoop.cs


注:本文中的Vector3D.GetMagnitudeSquared方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。