最近有网友反映,要提供些”一些高级优化技术分享“。您可以根据侧重点反馈您的需求。
发送邮件 unity3d168@yeah.net
代码部分
var cubeSize: float = 1;
var cubeSpeed: float = 500;
var UpFace: Transform;
private
var totalRotation: float = 0; // determines if we're past the 90 degrees
private
var beRolling: boolean = false;
private
var RotateDir: int;
private
var startRotate: boolean = false;
private
var RotatePivot: Vector3;
private
var NextRot: Vector3;
private
var NextPosi: Vector3;
// Use this for initialization
function Start() {
NextRot = transform.rotation.eulerAngles;
NextPosi = transform.position;
}
// Update is called once per frame
function Update() {
if (beRolling == false) {
if (Input.GetKey(“left”)) {
if (NextPosi.x > -4) {
//print(“rolling”);
beRolling = true;
startRotate = true;
RotateDir = 0;
NextPosi.x--;
}
} else if (Input.GetKey(“up”)) {
if (NextPosi.z < 4) {
//print(“rolling”);
beRolling = true;
startRotate = true;
RotateDir = 1;
NextPosi.z++;
}
} else if (Input.GetKey(“right”)) {
if (NextPosi.x < 4) {
//print(“rolling”);
beRolling = true;
startRotate = true;
RotateDir = 2;
NextPosi.x++;
}
} else if (Input.GetKey(“down”)) {
if (NextPosi.z > -4) {
//print(“rolling”);
beRolling = true;
startRotate = true;
RotateDir = 3;
NextPosi.z--;
}
}
} else {
DoRoll(RotateDir);
}
}
function DoRoll(Direct: int) {
var spinAmount: float = Time.deltaTime * cubeSpeed;
var t: float;
var pos: Vector3;
if (startRotate) {
if (Direct == 0) {
NextRot.z += 90;
RotatePivot = transform.position + new Vector3(-0.5, -0.5, 0);
} else if (Direct == 1) {
NextRot.x += 90;
RotatePivot = transform.position + new Vector3(0, -0.5, 0.5);
} else if (Direct == 2) {
NextRot.z -= 90;
RotatePivot = transform.position + new Vector3(0.5, -0.5, 0);
} else {
NextRot.x -= 90;
RotatePivot = transform.position + new Vector3(0, -0.5, -0.5);
}
NextRot.z = NextRot.z % 360;
NextRot.x = NextRot.x % 360;
totalRotation = 0;
startRotate = false;
}
if (beRolling) {
if (Direct == 0) {
transform.RotateAround(RotatePivot, Vector3.forward, spinAmount);
} else if (Direct == 1) {
transform.RotateAround(RotatePivot, Vector3.right, spinAmount);
} else if (Direct == 2) {
transform.RotateAround(RotatePivot, Vector3.forward * -1, spinAmount);
} else {
transform.RotateAround(RotatePivot, Vector3.right * -1, spinAmount);
}
// add to amount of spin in this update the total rotation
totalRotation += spinAmount;
// check if we have to move to the next edge
if (totalRotation >= 90) {
// we move to next corner as pivot point
totalRotation = 0;
beRolling = false;
var ri: int = 0;
var rf: float = transform.eulerAngles.x;
if (rf < 0) rf = 360 + rf;
ri = rf / 90.0;
if ((rf % 90.0) > 45) {
ri += 1;
}
ri = ri * 90;
transform.eulerAngles.x = ri;
rf = transform.eulerAngles.y;
if (rf < 0) rf = 360 + rf;
ri = rf / 90.0;
if ((rf % 90.0) > 45) {
ri += 1;
}
ri = ri * 90;
transform.eulerAngles.y = ri;
rf = transform.eulerAngles.z;
if (rf < 0) rf = 360 + rf;
ri = rf / 90.0;
if ((rf % 90.0) > 45) {
ri += 1;
}
ri = ri * 90;
transform.eulerAngles.z = ri;
transform.position = NextPosi;
print(“rolling OK rotation :” + transform.eulerAngles);
}
}
}
本插件来自
unity3d教程手册http://www.unitymanual.com/4598.html
分享到:
相关推荐
2.4.2 安装和配置Eclipse中Android插件 2.5 使用Eclipse开发Android应用程序 2.5.1 使用Eclipse创建Android项目 2.5.2 Eclipse中Android项目架构 2.5.3 Eclipse中Android项目的调试和运行 第3章 Android中的Activity...
Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象...
java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 ...
Flash 模拟试题及答案(一) 1.Loading应该放在影片的什麽位置? A. 影片不能有Loading B....C....D....2.Flash中设置属性的命令是?...A....B....C....D....A....B.... 目前Flash 最新的创作平台是Flash 6.0,播放插件是Flash ...
java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 ...
java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 ...
java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 ...
java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 ...
Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...
Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...