2015-09-09 4 views
0

меня 19 кругов в большом кругевращать геймобжекты вокруг другого геймобжекты

Мне нужно написать этот алгоритм

«в случае нажатия на централизованную окружности (вокруг круги вращаются вокруг него)»

не только вращающееся (о вокруг кругов - круг должен равняться/присвоенных `s следующего круга)

проверки этого изображение: http://i.imgur.com/HknGXFh.png

Я написал сложные строки коды, но не работал

void OnMouseDown() 
{ 
    if (gameObject.tag == "dynball") 
    { 
     if (isNotBanned(int.Parse(gameObject.name))) 
     { 
      change(); 
     } 
    } 
} 
    void change() 
{ 
    if (int.Parse(gameObject.name) == 4 || int.Parse(gameObject.name) == 5) 
    { 
     tmp = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 4]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 4] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 3]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 3] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 1]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 1] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 5]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 5] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 4]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 4] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 1]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 1] = tmp; 
    } 
    if (int.Parse(gameObject.name) == 8 || int.Parse(gameObject.name) == 9 || int.Parse(gameObject.name) == 10) 
    { 
     tmp = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 5]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 5] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 4]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 4] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 1]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 1] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 5]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 5] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 4]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 4] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 1]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 1] = tmp; 
    } 
    if (int.Parse(gameObject.name) == 13 || int.Parse(gameObject.name) == 14) 
    { 
     tmp = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 5]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 5] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 4]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 3] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 1]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 1] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 4]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 4] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 3]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) + 3] = GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 1]; 
     GameObject.FindGameObjectsWithTag("dynball")[int.Parse(gameObject.name) - 1] = tmp; 
    } 
    Debug.Log("I am here"); 
} 

ответ

0

кэшировать переменный человек, есть так много вызовов методов FindGameObjectsWithTag(...) и int.Parse(...), что я» м удивляйтесь, это не врезаться Unity

GameObject[] dynballs; 
int gName; 

void Start() 
{ 
    gName = int.Parse(gameObject.name); 
} 

void OnMouseDown() 
{ 
    if (gameObject.tag == "dynball") 
    { 
     if (isNotBanned(int.Parse(gameObject.name))) 
     { 
      change(); 
     } 
    } 
} 
    void change() 
{ 
    dynballs = GameObject.FindGameObjectsWithTag("dynball"); 
    if (int.Parse(gameObject.name) == 4 || int.Parse(gameObject.name) == 5) 
    { 
     tmp = dynballs[gName - 4]; 
     dynballs[gName - 4] = dynballs[gName - 3]; 
     dynballs[gName - 3] = dynballs[gName + 1]; 
     dynballs[gName + 1] = dynballs[gName + 5]; 
     dynballs[gName + 5] = dynballs[gName + 4]; 
     dynballs[gName + 4] = dynballs[gName - 1]; 
     dynballs[gName - 1] = tmp; 
    } 
    if (int.Parse(gameObject.name) == 8 || int.Parse(gameObject.name) == 9 || int.Parse(gameObject.name) == 10) 
    { 
     tmp = dynballs[int.Parse(gameObject.name) - 5]; 
     dynballs[gName - 5] = dynballs[gName - 4]; 
     dynballs[gName - 4] = dynballs[gName + 1]; 
     dynballs[gName + 1] = dynballs[gName + 5]; 
     dynballs[gName + 5] = dynballs[gName + 4]; 
     dynballs[gName + 4] = dynballs[gName - 1]; 
     dynballs[gName - 1] = tmp; 
    } 
    if (int.Parse(gameObject.name) == 13 || int.Parse(gameObject.name) == 14) 
    { 
     tmp = dynballs[gName - 5]; 
     dynballs[gName - 5] = dynballs[gName - 4]; 
     dynballs[gName - 3] = dynballs[gName + 1]; 
     dynballs[gName + 1] = dynballs[gName + 4]; 
     dynballs[gName + 4] = dynballs[gName + 3]; 
     dynballs[gName + 3] = dynballs[gName - 1]; 
     dynballs[gName - 1] = tmp; 
    } 
    Debug.Log("I am here"); 
} 

Но в любом случае, iv'e отвечал на подобный вопрос here и here, вы могли бы найти ответы полезные

+0

ну теперь, спасибо –

-1

использование transform.rotateAround или quaternion.slerp

+0

That's легко, я не нужен, чтобы повернуть только мне нужно вокруг кругов, которые будут сдвинуты вправо или влево проверить это изображение http://i.imgur.com/DZBYkCq.png –

+0

то просто использовать преобразование + смещение (в каждом направлении u хотите или использовать углы) внутреннего cirlce – LumbusterTick

+0

будет показано, что он сдвинут для игрока , но в моей логике игры Мне нужно назначить каждый круг его следующему –

Смежные вопросы