在上一篇我们完成面的旋转,却发现旋转途中若点击放开,面会停留在旋转途中,今天我们就要来解决这个问题。
目录
面的旋转
游戏机制
private bool autoRotating = false;
private Quaternion targetQuaternion;
RotateToRightAngle()函式中:
public void RotateToRightAngle()
{
Vector3 vec = transform.localEulerAngles;
vec.x = Mathf.Round(vec.x / 90) * 90;
vec.y = Mathf.Round(vec.y / 90) * 90;
vec.z = Mathf.Round(vec.z / 90) * 90;
targetQuaternion.eulerAngles = vec;
autoRotating = true;
}
并在Update()中加入 RotateToRightAngle()
新增自动旋转速度
private float speed = 300f;
AutoRotate()中:
private void AutoRotate()
{
dragging = false;
var step = speed * Time.deltaTime;
transform.localRotation = Quaternion.RotateTowards(transform.localRotation, targetQuaternion, step);
//如果开始旋转,旋转到底
if (Quaternion.Angle(transform.localRotation, targetQuaternion) <= 1)
{
transform.localRotation = targetQuaternion;
readCube.ReadState();
autoRotating = false;
dragging = false;
}
}
在Update()中新增是否执行AutoRotate()的程序
if (autoRotating)
{
AutoRotate();
}
在CubeStae中新增PutDown(),之後才可以选取别的面
public void PutDown(List<GameObject> littleCubes, Transform pivot)
{
foreach (GameObject littleCube in littleCubes)
{
if (littleCube != littleCubes[4])
{
littleCube.transform.parent.transform.parent = pivot;
}
}
}
并在AutoRotate()加入
cubeState.PutDown(activeSide, transform.parent);
魔术方块的旋转就完成喽!
魔术方块的机制完成後,要来新增游戏机制了。
首先要先将角色与道具放置在魔术方块上
新增Rigidbody,因为不需要重力,所以勾选 Is Kinematic
并且帮他们都加上碰撞器,因为游戏机制是在同一面即可,碰撞器大小要确保可以碰到同面的道具。
新增PlayerController(),并加入碰撞侦测
private void OnTriggerEnter(Collider other)
{
Debug.Log("Coll" + other.gameObject.name);
}
在撰写场景切换程序码前,要先在File>Build Settings>Scenes In Build中,确认场景都有被加入。
新增SceneManager,并在其中加入场景传换、重新开始的程序码。
//场景转换
SceneManager.LoadScene(0);
//重新开始
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
如此一来,魔术方块AR游戏就完成喽!
以上就是魔术方块AR游戏的教学,下一篇会是FPS灭火游戏的制作,明天见!
<<: day14 channel实战使用 with webSocket,後面离题讲android接localhost
0. 进度条 模型 进度 VGG Net 完成 ResNet 完成 DensNet 完成 Mobil...
题号;100 标题:Same Tree 难度;Easy Given the roots of two...
今天我们要来介绍 EBS Type方案比较,那我们开始吧! 在之前的文章中我们有提过,EBS 相对...
This JavaScript 的 This 会指向不同的对象,这依据函数如何被呼叫的。 当函数被呼...
本篇我们会分两部分 - 校验和去重 前面讲到的Metadata,如果有了Metadata,我们可以做...