Как добавить разную гравитацию на нерестовые объекты?
Я работаю над проектом, в котором я хочу создать эффект включения при каждом нажатии кнопки "Q", у меня работает анимация и персонаж, у меня также есть вызывающие объекты вокруг моего игрока, которых я хочу вызвать (см. Рисунок ниже).) Мой вопрос заключается в том, как добавить разную гравитацию на каждый камень (нерестовый объект).
Вот скрипт, который я сейчас использую.
/* Public Variables Declaration */
public Transform spawn_LocationForSmall;
public Transform spawn_LocationForMedium;
public Transform spawn_LocationForLarge;
public GameObject smallRock_Prefab;
public GameObject mediumRock_Prefab;
public GameObject largeRock_Prefab;
/* Private Variables Declaration */
private GameObject[] smallRocks_List;
private float posX, posY, posZ;
private bool smallCount = false;
private bool mediumCount = false;
private bool largeCount = false;
private bool small_CheckPos = false;
private bool medium_CheckPos = false;
private bool large_CheckPos = false;
void Start() {
//smallRocks_List = GameObject.FindGameObjectsWithTag("smallRock");
Create_Small_Rocks();
Create_Medium_Rocks();
Create_Large_Rocks();
}
private void Create_Small_Rocks(){
for(int i=0; i<=20; i++){
small_CheckPos = false;
posX = this.transform.position.x + Random.Range(-3.0f, 3.0f);
posY = this.transform.position.y + Random.Range(-3.0f, 3.0f);
posZ = this.transform.position.z + Random.Range(-3.0f, 3.0f);
if(posX > 3f && posY > 3f){
small_CheckPos = true;
}
if (small_CheckPos == true) {
Vector3 newPos = new Vector3(posX, posY, posZ);
GameObject createdObject = GameObject.Instantiate(smallRock_Prefab,
newPos, spawn_LocationForSmall.rotation) as GameObject;
createdObject.transform.parent = spawn_LocationForSmall.transform;
}
}
smallCount = true;
}
/* the other two functions are similar to this */
2 ответа
Поиск систем частиц:
1) https://docs.unity3d.com/ScriptReference/ParticleSystem.html
2) https://www.youtube.com/watch?v=FEA1wTMJAR0&t=536s
3) https://www.youtube.com/watch?v=xenW67bXTgM
- Это позволяет загружать классные эффекты или даже префабы в качестве объектов-клонов (в данном случае это камни / астероиды). Его также можно контролировать скорость нереста / количество / скорость / (случайный) размер / физика (гравитация)
Я действительно не знаю, можете ли вы изменить гравитацию для каждого человека, но вы можете изменить эти вещи:
Масс - спектр:
В компоненте Rigidbody есть "массовые" компоненты вверху. Как сказано в документации Unity: "Объекты с более высокой массой толкают объекты с более низкой массой при столкновении. Подумайте о большом грузовике, сбивающем маленький автомобиль". Тем не менее, это не меняет скорость падения объекта.
Физика Материал:
В компонентах коллайдера вы должны увидеть что-то под названием "Материал". Вы можете создавать новые физические материалы и редактировать их случайным образом, чтобы увеличить или уменьшить трение между камнем и поверхностью, и таким образом изменить упругость камней.
Постоянная сила:
Если вы хотите, чтобы некоторые объекты падали быстрее, вы можете использовать этот компонент. Лично я никогда не использовал это раньше, но это отлично подходит для вашей проблемы. Вы можете добавить постоянную силу к объекту с помощью этого компонента, поэтому, если вы добавите некоторую нисходящую силу на свои камни, это должно помочь им быстрее опуститься.
Пожалуйста, дайте мне знать, если что-то из этого помогло.