Как вибрировать объект с помощью Unity 3D? - PullRequest
1 голос
/ 28 мая 2020

Я пытаюсь смоделировать очень простое землетрясение с помощью Unity. Основная идея - двигать платформу вперед / назад. Я попробовал приведенный ниже код, но он не сработал. Мне нужно что-то подобное.

transform.position += transform.forward*10;
transform.position += transform.forward*-10;

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Если вы хотите создать землетрясение, лучший способ - это встряхнуть камеру, а не платформу.

Для этого вы можете использовать EZ Camera Shake Unity Asset (был удален сформировать хранилище ресурсов, поэтому вот ссылка на GitHub).

Если вы все же решите переместить платформу, вы все равно можете использовать скрипты ресурсов на своей платформе.

Чтобы узнать больше о том, как чтобы использовать этот ресурс, просто посмотрите « EZ Camera Shake Unity » на YouTube

0 голосов
/ 28 мая 2020

Вы захотите сделать это при нескольких обновлениях, чтобы каждое различие можно было отобразить на экране, что-то вроде этого, я бы рекомендовал

private Vector3 initialPosition;
Vector3 directionOfShake = transform.forward;
public float amplitude; // the amount it moves
public float frequency; // the period of the earthquake

void Start(){
    initialPosition; = transform.position // store this to avoid floating point error drift
}



void FixedUpdate(){
     transform.position = initialPosition + directionOfShake*Mathf.Sin(frequency * Time.FixedDeltaTime)*amplitude;
}

Это позволяет вам изменять землетрясение из редактора .

Или, если хотите чего-то резче

void FixedUpdate(){
         transform.position = initialPosition + directionOfShake*(-amplitude + Mathf.PingPong(frequency * Time.FixedDeltaTime, 2.f*amplitude);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...