本文整理汇总了C#中Point3F.vectorScale方法的典型用法代码示例。如果您正苦于以下问题:C# Point3F.vectorScale方法的具体用法?C# Point3F.vectorScale怎么用?C# Point3F.vectorScale使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Point3F
的用法示例。
在下文中一共展示了Point3F.vectorScale方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: serverCmdcarUnmountObj
public static void serverCmdcarUnmountObj(GameConnection client, Player obj)
{
obj.unmount();
obj.setControlObject(obj);
TransformF ejectpos = obj.getTransform();
ejectpos += new TransformF(0, 0, 5);
obj.setTransform(ejectpos);
Vehicle mvehicle = obj["mVehicle"];
Point3F ejectvel = mvehicle.getVelocity();
ejectvel += new Point3F(0, 0, 10);
ejectvel = ejectvel.vectorScale(((SimDataBlock) (obj.getDataBlock()))["mass"].AsFloat());
obj.applyImpulse(ejectpos.GetPosition(), ejectvel);
}
示例2: damage
public override void damage(GameBase sourceobject, Point3F position, float damage, string damagetype)
{
if (!isObject())
return;
if (getState() == "Dead")
return;
if (damage == 0.0)
return;
applyDamage(damage);
if (getState() == "Dead")
return;
Point3F ejectvel = getVelocity();
if (ejectvel.z <= 0)
{
ejectvel += new Point3F(0, 0, 5);
SimDataBlock d = getDataBlock();
if (d.isObject())
ejectvel = ejectvel.vectorScale(d["mass"].AsFloat());
applyImpulse(getPosition(), ejectvel);
}
Point3F currentpos = getPosition();
currentpos.x += r.Next(-5, 5);
currentpos.y += r.Next(-5, 5);
if (getDamageLevel() > 50)
{
currentpos.x += r.Next(-50, 50);
currentpos.y += r.Next(-50, 50);
}
setMoveDestination(currentpos, false);
}
示例3: doDismount
public override void doDismount(Player obj)
{
Player player = obj.getId();
Vehicle vehicle = player["mVehicle"];
if (!vehicle.isObject())
return;
if (!player.isMounted())
return;
Point3F vvel = vehicle.getVelocity();
VehicleData vdb = vehicle.getDataBlock();
int maxDismountSpeed = vdb["maxDismountSpeed"].AsInt();
if ((vvel.len() <= maxDismountSpeed)) //|| (forced))
{
TransformF pos = player.getTransform();
TransformF rot = pos;
TransformF oldpos = pos.copy();
List<Point3F> vecs = new List<Point3F> {new Point3F(-1, 0, 0), new Point3F(0, 0, 1), new Point3F(0, 0, -1), new Point3F(1, 0, 0), new Point3F(0, -1, 0), new Point3F(0, 0, 0)};
Point3F impulsevec = new Point3F(0, 0, 0);
TransformF r = math.MatrixMulVector(player.getTransform(), vecs[0]);
vecs[0] = r.GetPosition();
pos.mPositionX = 0;
pos.mPositionY = 0;
pos.mPositionZ = 0;
const int numofAttempts = 5;
int success = -1;
for (int i = 0; i < numofAttempts; i++)
{
Point3F vectorscale = vecs[i].vectorScale(3);
pos = oldpos + new TransformF(vectorscale);
if (!player.checkDismountPoint(oldpos.GetPosition(), pos.GetPosition()))
continue;
success = i;
impulsevec = vecs[i].copy();
break;
}
//if ((forced) && (success == -1))
if (success == -1)
pos = oldpos.copy();
player["mountVehicle"] = false.AsString();
player.schedule("4000", "mountVehicles", "true");
player.unmount();
player.setTransform(new TransformF(pos.mPositionX, pos.mPositionY, pos.mPositionZ, rot.mOrientationX, rot.mOrientationY, rot.mOrientationZ, rot.MAngle));
Point3F velo = impulsevec.vectorScale(player["mass"].AsFloat());
velo.z = 1;
player.applyImpulse(pos.GetPosition(), velo);
Point3F vel = player.getVelocity();
float vec = Point3F.vectorDot(vel, vel.normalizeSafe());
if (vec > 50)
{
float scale = 50/vec;
player.setVelocity(vel.vectorScale(scale));
}
}
else
message.MessageClient(player["client"], "msgUnmount", @"\c2Cannot exit %1 while moving.", console.GetVarString(vdb + ".nameTag"));
}