今天完了一下跳舞的线。觉得他的那种线段延伸,向前运动的效果很好看,所以打算自己用u3d做一下。
我估计这种线段的运动估计也是个《反应堆》这种方块的行为如出一辙。方块不是真的被切割,而是在下方cube的边界处重现生成cube(原始)-cube(覆盖)的一个全新的体积的cube'。
《反应堆》
public GameObject targetPrefabs;//预制体
public float speed = 1;//速度
public Vector3 pos;
public Material material;//材质
private bool turn = true;
// Update is called once per frame
void Update () {
this.pos = this.targetPrefabs.transform.position;
this.targetPrefabs.transform.Translate(Vector3.forward * speed * Time.deltaTime);
GameObject obj2 = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj2.transform.position = pos;
obj2.GetComponent<MeshRenderer>().material = this.material;
obj2.GetComponent<BoxCollider>().isTrigger = true;
if (Input.GetKeyDown(KeyCode.Space))
{
if (this.turn)
{
this.targetPrefabs.transform.eulerAngles = new Vector3(0, -90, 0);
this.turn = !this.turn;
}
else
{
this.targetPrefabs.transform.eulerAngles = new Vector3(0, 0, 0);
this.turn = !this.turn;
}
}
}
就是沿着cube的前进方向不断创建cube。额就是这么直接。
当然你也可以用Instance方法来代替生成原型物体的方法,创建线条的身体的prefabs。这样你就不用为原型物体指定材质。
这个线头必须分开,因为线头的所需要携带写脚本可不止这么多,通常会含有射线检测。刚体等,用于检测是否飞出地面和发生碰撞,不这样只会耗费更多性能和发生奇怪的逻辑问题。
对了,如果你的线段不需要转折或者其他特别的操作,强烈建议给创建线的身体的时机加上step,也就是隔断时间创建。
在相机添覆盖全图的cube,render取消勾选,检测碰撞在相机跟随运动的时候把线段超出摄像机的身体移除。
感谢关注~
goodnight~
负重前行~
网友评论