Я хочу, чтобы мой объект упал, когда игрок рядом с ним - PullRequest
0 голосов
/ 08 мая 2019

Я хочу, чтобы мои объекты падали, когда игрок добрался до этой сцены.У моей игры длинная карта, и я хочу, чтобы они не падали при запуске игры. Есть ли какой-нибудь код для обнаружения игрока на виде?для предметов падать?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FallDown : MonoBehaviour
{
       public float fallSpeed = 8.0f;

    //Variables for starting position and length until reset
    private Vector3 _startingPos;
    public float FallDistance = 5f;

    void Start()
    {
        transform.Translate(Vector3.down * fallSpeed * Time.deltaTime, Space.World);
        // Save starting position
        _startingPos = transform.position;
    }

    void Update()
    {
        transform.Translate(Vector3.down * fallSpeed * Time.deltaTime, Space.World);

        // If the object has fallen longer than 
        // Starting height + FallDistance from its start position
        if (transform.position.y > _startingPos.y + FallDistance)
        {
            transform.position = _startingPos;
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Хотя приведенный выше ответ верен, коллайдеры могут быть не тем, что вы хотите реализовать в этом случае.Коллайдеры используются для обнаружения столкновений, в то время как вы хотите, чтобы объекты падали, когда игрок находится на определенном расстоянии от них.Для этого я бы предложил сначала добавить ссылку на игрока GameObject:

private GameObject playerRef;

И в функции «Пуск» найти игрока:

playerRef = GameObject.Find("yourPlayerGameObjectNameHere");

Получить объекты GameObject, которые вы хотитеупасть, найдя их, как указано выше, или передав публичную ссылку на них через инспектора.После этого вы можете использовать Vector3.distance между каждым GameObject и игроком, например:

if( Vector3.Distance(player.transform.position, fallingObject.transform.position) < yourDistanceHere ){
    // Make the object fall
}
0 голосов
/ 08 мая 2019

Вы пытались реализовать это поведение с помощью коллайдеров?

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

После того, как вы добавили их и настроили их параметры, вы можете проверить столкновение, используя метод OnColissionEnter .Этот метод будет запускаться каждый раз, когда обнаруживается столкновение в GameObject, который содержит сценарий.В вашем случае падающие предметы должны его удерживать.

private void OnCollisionEnter(Collision other)
{
    //MAKE THE OBJECTS FALL
}
...