本文整理汇总了C#中MapObject.UpdatePositionAndRotationByPhysics方法的典型用法代码示例。如果您正苦于以下问题:C# MapObject.UpdatePositionAndRotationByPhysics方法的具体用法?C# MapObject.UpdatePositionAndRotationByPhysics怎么用?C# MapObject.UpdatePositionAndRotationByPhysics使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MapObject
的用法示例。
在下文中一共展示了MapObject.UpdatePositionAndRotationByPhysics方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReceiveObject
public void ReceiveObject(MapObject obj, Teleporter source)
{
if (!string.IsNullOrEmpty(Type.ReceiveParticleName))
Map.Instance.CreateAutoDeleteParticleSystem(Type.ReceiveParticleName, Position);
if (source == null)
{
float offset = obj.Position.Z - obj.PhysicsModel.GetGlobalBounds().Minimum.Z;
obj.Position = Position + new Vec3(0, 0, offset);
obj.Rotation = Rotation;
obj.SetOldTransform(obj.Position, obj.Rotation, obj.Scale);
}
else
{
Quat destRotation = Rotation * Mat3.FromRotateByZ(new Degree(180).InRadians()).ToQuat();
foreach (Body body in obj.PhysicsModel.Bodies)
{
body.Rotation = body.Rotation * source.Rotation.GetInverse() * destRotation;
Vec3 localPosOffset = (body.Position - source.Position) * source.Rotation.GetInverse();
body.Position = Position + localPosOffset * destRotation;
body.OldPosition = body.Position;
body.OldRotation = body.Rotation;
body.LinearVelocity = body.LinearVelocity * source.Rotation.GetInverse() * destRotation;
body.AngularVelocity = body.AngularVelocity * source.Rotation.GetInverse() * destRotation;
}
obj.UpdatePositionAndRotationByPhysics(true);
obj.SetOldTransform(obj.Position, obj.Rotation, obj.Scale);
Unit unit = obj as Unit;
if (unit != null)
{
PlayerIntellect playerIntellect = unit.Intellect as PlayerIntellect;
if (playerIntellect != null)
{
Vec3 vec = playerIntellect.LookDirection.GetVector();
Vec3 v = vec * source.Rotation.GetInverse() * destRotation;
playerIntellect.LookDirection = SphereDir.FromVector(v);
}
}
}
//add object to the list of processed objects. object can't activate teleportation.
processedObjectsInActiveArea.AddWithCheckAlreadyContained(obj);
//skip ticks to wait for update physics body of transfered object after teleportation.
skipTicks += 2;
}