您的位置:首页 > 移动开发 > Unity3D

Unity 梯子生成算法

2017-04-27 14:12 543 查看
这位同学太有才了,写得都非常好- -

http://www.cnblogs.com/wuzhang/p/wuzhang20150409.html

using UnityEngine;
public class PadelCreate : MonoBehaviour
{
public GameObject prb_padel;
public float angel = 30;
public int leftCount = 50;
public int rightCount = 50;
private Vector3 lastOnePosition;
void Start()
{
if (prb_padel == null)
prb_padel = GameObject.CreatePrimitive(PrimitiveType.Cube);
anyAngelPadel(angel);
}
/// <summary>
/// 任意角度的楼梯实例
/// </summary>
/// <param name="angel"></param>
void anyAngelPadel(float angel)
{
float hudu = (angel / 180) * Mathf.PI;
//上楼梯
for (int i = 0; i < leftCount; i++)
{
GameObject tmpPadel = (GameObject)Instantiate(prb_padel);
float yy = i * Mathf.Tan(hudu);
tmpPadel.transform.position = new Vector3(-7 + i, -2 + yy, 0);
lastOnePosition = tmpPadel.transform.position;
}
//水平方向生成两个
for (int i = 0; i < 2; i++)
{
GameObject tmpPadel = (GameObject)Instantiate(prb_padel);
tmpPadel.transform.position = new Vector3(lastOnePosition.x + 1, lastOnePosition.y, 0);
lastOnePosition = tmpPadel.transform.position;
}
//下楼梯
for (int i = 0; i < rightCount; i++)
{
GameObject tmpPadel = (GameObject)Instantiate(prb_padel);
float yy = i * Mathf.Tan(hudu);
tmpPadel.transform.position = new Vector3(lastOnePosition.x + i, lastOnePosition.y - yy, 0);
//lastOnePosition = tmpPadel.transform.position;
}
}
}


50*50



6*6

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: