?? script2.cs
字號:
//--------------------------------------------------------------------------------------
// File: Script3.cs
//
// Scripting code for Managed Scripting sample
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//--------------------------------------------------------------------------------------
using System;
/// <summary>
/// Handles scripts for the ShadowVolume sample
/// </summary>
class ScriptClass
{
// Constants
const float MaxMovementSpeed = 3.5f; // Maximum movement speed
const float RotationSpeed = 0.01f; // Constant rotation speed
const float MaxX = 2.0f;
const float MaxY = 2.0f;
const float MaxZ = 2.0f;
const float MinX = -2.0f;
const float MinY = 0.0f;
const float MinZ = -2.0f;
// Variables
static float MovementSpeedX = 0.85f;
static float MovementSpeedY = 0.85f;
static float MovementSpeedZ = 0.85f;
static double LastUpdateTime;
static int XDirection = 1;
static int YDirection = 1;
static int ZDirection = 1;
static float storedX = MinX;
static float storedY = MinY;
static float storedZ = MinZ;
// Rotation variables
static bool isRotationX = false;
static bool isRotationY = false;
static bool isRotationZ = false;
static float rotationXSpeed = 0.0f;
static float rotationYSpeed = 0.0f;
static float rotationZSpeed = 0.0f;
// Rotation variables
static float rotationX = 0.0f;
static float rotationY = 0.0f;
static float rotationZ = 0.0f;
static Random rndGenerator = new Random();
/// <summary>
/// Update the position of the player
/// </summary>
public static void UpdatePosition(double appTime, ref float x, ref float y, ref float z)
{
// Make sure some time has elapsed
float elapsedTime = (float)(appTime - LastUpdateTime);
LastUpdateTime = appTime;
if (elapsedTime <= 0.0f)
return; // Nothing to do
// Increase the X param some
storedX += (MovementSpeedX * elapsedTime) * XDirection;
// Now Y
storedY += (MovementSpeedY * elapsedTime) * YDirection;
// Finally Z
storedZ += (MovementSpeedZ * elapsedTime) * ZDirection;
// Do Param checks
if (storedX >= MaxX)
{
MovementSpeedX = MaxMovementSpeed * (float)rndGenerator.NextDouble();
storedX = MaxX;
XDirection *= -1;
isRotationY = true;
rotationYSpeed += (RotationSpeed * XDirection);
}
else if (storedX <= MinX)
{
MovementSpeedX = MaxMovementSpeed * (float)rndGenerator.NextDouble();
storedX = MinX;
XDirection *= -1;
isRotationY = true;
rotationYSpeed += (RotationSpeed * XDirection);
}
if (storedY >= MaxY)
{
MovementSpeedY = MaxMovementSpeed * (float)rndGenerator.NextDouble();
storedY = MaxY;
YDirection *= -1;
isRotationZ = true;
rotationZSpeed += (RotationSpeed * YDirection);
}
else if (storedY <= MinY)
{
MovementSpeedY = MaxMovementSpeed * (float)rndGenerator.NextDouble();
storedY = MinY;
YDirection *= -1;
isRotationZ = true;
rotationZSpeed += (RotationSpeed * YDirection);
}
if (storedZ >= MaxZ)
{
MovementSpeedZ = MaxMovementSpeed * (float)rndGenerator.NextDouble();
storedZ = MaxZ;
ZDirection *= -1;
isRotationX = true;
rotationXSpeed += (RotationSpeed * ZDirection);
}
else if (storedZ <= MinZ)
{
MovementSpeedZ = MaxMovementSpeed * (float)rndGenerator.NextDouble();
storedZ = MinZ;
ZDirection *= -1;
isRotationX = true;
rotationXSpeed += (RotationSpeed * ZDirection);
}
// Save the variables now
x = storedX;
y = storedY;
z = storedZ;
// Update rotation if need be
if (isRotationX)
rotationX += rotationXSpeed;
if (isRotationY)
rotationY += rotationYSpeed;
if (isRotationZ)
rotationZ += rotationZSpeed;
}
/// <summary>
/// Update the players rotation on the X axis
/// </summary>
public static void UpdateRotationX(double appTime, ref float a)
{
a = rotationX;
}
/// <summary>
/// Update the players rotation on the Y axis
/// </summary>
public static void UpdateRotationY(double appTime, ref float a)
{
a = rotationY;
}
/// <summary>
/// Update the players rotation on the Z axis
/// </summary>
public static void UpdateRotationZ(double appTime, ref float a)
{
a = rotationZ;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -