歡迎加入Unity業內qq交流羣:956187480
qq掃描二維碼加羣
demo鏈接:https://download.csdn.net/download/qq_37310110/12068839
https://github.com/romantic123fly/SlidingScreenAndSurfaceBall
今天以這個惡趣味的小demo終結2019年的最後一天,希望明年大家都加官進爵,升職加薪。
一:球形分佈
/// <param name="bornPointNum">實例個數</param>
/// <param name="radius">球體半徑</param>
public void CreatPointOnSphere(int bornPointNum, float radius)
{
//生成
for (int i = 0; i < bornPointNum; i++)
{
float y = (float)i * 2.0f / bornPointNum + (1 / bornPointNum) - 1.0f;
float r = Mathf.Sqrt(1.0f - y * y);
float phi = i * 2.4f;
Vector3 pos = new Vector3(Mathf.Cos(phi) * r * radius, y * radius, Mathf.Sin(phi) * r * radius);
BornPoint(pos, i);
}
}
void BornPoint(Vector3 pos, int tempIndex)
{
GameObject obj = Instantiate( Resources.Load<GameObject>("Cube"));
obj.GetComponent<MeshRenderer>().material = Resources.Load<Material>("Materials/"+ tempIndex%5);
obj.transform.SetParent(container);
obj.transform.localPosition = pos;
obj.name = tempIndex+"";
transforms.Add(obj.transform);
}
二:鼠標控制
RaycastHit m_hitInfo;
private void Update()
{
if (container != null)
{
if (Input.GetMouseButtonUp(0)) //點擊鼠標右鍵
{
object ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
bool isHit = Physics.Raycast((Ray)ray, out hit);
if (isHit)
{
Debug.Log(hit.transform.name);
GameManager.GetInstance().SetTargetItemIndex(int.Parse( hit.transform.name));
}
}
if (Input.GetMouseButton(0)&& !EventSystem.current.IsPointerOverGameObject())
{
float hor = Input.GetAxis("Mouse X");
float ver = Input.GetAxis("Mouse Y");
container.Rotate(new Vector3(ver, -hor, 0) * Time.deltaTime * 100, Space.World);
}
}
if (transforms!=null&& transforms.Count>0)
{
foreach (var item in transforms)
{
item.LookAt(Camera.main.transform);
}
}
}
三:滑屏切圖
滑屏切圖這個是參考網上的,寫的挺複雜的後期會優化一下,沒有用插件用的unity的AnimationCurve組件
歡迎加入Unity業內qq交流羣:956187480
qq掃描二維碼加羣