2016-06-03 2 views
0

У меня есть несколько объективов , у которых есть собственный сценарий управления анимацией и анимацией. объекта Car работает на дороге, и я хочу, чтобы управлять всей машины анимацией т.е.Правильный способ управления автомобильной анимацией

  1. если автомобиль впереди, то я замедлиться обратной машина так, чтобы она не столкновения или обойти впереди автомобиля.
  2. если впереди автомобиль останавливается, тогда я останавливаюсь назад и играю и скорость соответственно.

Я пробовал raycast для этой техники, я добавил коллайдер к каждому автомобилю, тогда я радуюсь вперед от каждой машины. он частично работает и когда-то не обнаруживает опережающий объект, потому что мой код else не кажется правильным.

I think that it is not the right way to do this job. what is the correct way to do as Raycast is also expensive 

    if (Physics.Raycast(transform.position, transformForwad, out rayHit, 10f)) 
      { 
       if (rayHit.transform.tag == "Car") 
       { 
        Debug.Log("car collide, current object: "+ transform.name +" : hitted "+ rayHit.transform.name); 
        isCarNearToAnotherCar = true; 
        ANIMATION_OBJECT.GetComponent<Animation>()[ClipName].speed = rayHit.transform.GetComponent<AnimationControlSpeed>().Speed/2; 

       } 
       else { 
        Debug.Log("car collide end, current object: " + transform.name + " : hitted " + rayHit.transform.name); 
        isCarNearToAnotherCar = false; 
       } 

      } 

//Update speed only when isCarNearToAnotherCaris false. 
     if (!isCarNearToAnotherCar) 
     {//normal the speed, when there is no car ahead 
      ANIMATION_OBJECT.GetComponent<Animation>()[ClipName].speed = Speed; 
     } 

ответ

1

Два варианта, как я вижу:
1) Как вы контролируете все машины, и вы знаете, их порядок (который, как вы говорите, никогда не меняется), то почему бы вам не просто сделать математику на основе на позиции автомобилей & размеры, а не raycasting? Сравните размеры leadfoot & с позиции второго автомобиля и действуйте соответственно, затем с 2-го по 3-й и т. Д.
-или, ИМХО еще лучше-
2) Почему вы не используете коллайдеры? Вы можете добавить коллайдер триггера к переднему бамперу автомобилей и вызвать событие, когда оно касается жесткого тела переднего автомобиля. Вы можете поместить коллайдер, как вы хотите установить «диапазон реакции», что вам нравится.
Вы даже можете установить разные размеры «избегания столкновений» для разных автомобилей, основываясь на том, как «смелые» водители - как слишком близко к тому, чтобы ехать вперед.

+0

Спасибо за ваш вклад, но ваши вопросы кажутся сложными –

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