2014-11-16 61 views
0

所以在这里我有一个图像将提供更好的理解我的问题。 因此,目前我有一些白色块,并在白色块内,我有一些青色边框。 所以我现在想解决的当前问题是。 每当白盒延伸到青色边框外时。我想调整它们的大小,使它们位于青色边框内。比如从顶端开始的五分之一。当它扩展了限制区域时调整gameObject的大小

我该如何解决这个问题?

在此先感谢。

enter image description here

编辑

void Update() { 

    if(numOfGeneratedGuideline < numOfGuidelineToGenerate) { 
     Generate_Guideline_Positons(numOfGeneratedGuideline); 
     Generate_Platform_Positions_And_Scale(numOfGeneratedGuideline); 
     Generate_Platforms(numOfGeneratedGuideline); 
     numOfGeneratedGuideline++; 
    } 

} 

void Generate_Guideline_Positons(int i) { 

    float tempGuidelineOffset = groundHeight + (guidelineOffset * (i + 1)); 

    guidelinePosX[i] = worldWidth/2; 
    guidelinePosY[i] = tempGuidelineOffset; 
    guidelinePosZ[i] = 0; 

} 

void Generate_Platform_Positions_And_Scale(int i) { 

    randomGuidelineNumber = Random.Range(1, numOfGuidelineToGenerate + 1); 

    float tempPlatformPosXMin = (worldWidth - guidelineWidth)/2; 
    Debug.Log(tempPlatformPosXMin); 
    float tempPlatformPosXMax = worldWidth - tempPlatformPosXMin; 
    Debug.Log(tempPlatformPosXMax); 
    float tempPlatformPosY = groundHeight + (guidelineOffset * (i + 1)); 

    platformPosX[i] = Random.Range(tempPlatformPosXMin, tempPlatformPosXMax); 
    platformPosY[i] = tempPlatformPosY; 
    platformPosZ[i] = 0; 

    platformScaleX[i] = Random.Range(minPlatformScaleRange, maxPlatformScaleRange); 
    platformScaleY[i] = 1; 
    platformScaleZ[i] = 1; 

    //22 29 36 43 50 

} 

void Generate_Platforms(int i) { 

    GameObject newplatform = Instantiate(platformPrefab, new Vector3(platformPosX[i], platformPosY[i], platformPosZ[i]), Quaternion.identity) as GameObject; 
    newplatform.transform.localScale = new Vector3(platformScaleX[i], platformScaleY[i], platformScaleZ[i]); 

} 

回答

0

我不熟悉团结的细节,但在任何情况下,你需要做一个测试的矩形。

比方说,cyan是Cyan gameObject的Rectangle,gray是Grey gameObject的Rectangle。只需注意:lefttop属性可能是xy属性,而rightbottom属性可能是x + widthy + height

if (gray.left < cyan.left) //Out of bounds on the left 
    gray.left = cyan.left; 
if (gray.right > cyan.right) //Out of bounds on the right/past the right edge 
    gray.right = cyan.right; 
if (gray.top < cyan.top) //Out of bounds on the top 
    gray.top = cyan.top; 
if (gray.bottom > cyan.bottom) //Out of bounds on the bottom/gray stretches below cyan 
    gray.bottom = cyan.bottom; 

这当然假设一个正x和负y世界。例如。底部是比顶部更大的数字,左侧是比右侧更小的数字。

+0

我认为生病给你提供了我的代码 – JekasG