Единство стрелять мяч от POV камеры - PullRequest
0 голосов
/ 26 октября 2018

Я знаю, что об этом спрашивали несколько раз, но я верю, что мой вопрос может быть решен без особых проблем (надеюсь!) И является несколько уникальным.Я пишу сценарий мини-гольфа, который стреляет в мяч, предназначенный для стрельбы из камеры.Я не могу заставить это сделать, однако.Я уверен, что это как-то связано с camera.transform, но не уверен.Я абсолютный нуб к кодированию в Unity.Мне просто нужен простой и простой способ заставить этот чертов мяч для гольфа двигаться по прямой в любом направлении, в котором стоит камера.Пожалуйста, помогите!

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

public class HitBall2 : MonoBehaviour
{

    Rigidbody rigidBody;
    bool StartedShot;
    Vector3 shotStart;
    Vector3 shotEnd;
    Vector3 direction;
    public float distance;
    public float forceAdjust = 0.05f;

    void Start()
    {

        rigidBody = this.GetComponent<Rigidbody>();
        StartedShot = false;
    }


    void Update()
    {
        if (Input.GetMouseButtonUp(1))
        {
            rigidBody.velocity = Vector3.zero;
            this.transform.position = Vector3.zero;
            StartedShot = false;
        }

        // Starting shot
        if (!StartedShot && Input.GetMouseButtonDown(0))
        {
            StartedShot = true;
            shotStart = Input.mousePosition;
        }

        // Ending shot
        if (StartedShot && Input.GetMouseButtonUp(0))
        {
            shotEnd = Input.mousePosition;
            direction =  Camera.main.transform.forward - shotEnd;
            float distance = direction.magnitude;
            StartedShot = false;

            Vector3 shootDirection = new Vector3(direction.x, 0.0f, direction.y);

            rigidBody.AddForce(shootDirection * rigidBody.mass * forceAdjust, ForceMode.Impulse);
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Хорошо, я изменил сценарий следующим образом, и мяч теперь удаляется от камеры. Есть небольшая проблема со скоростью мяча и небольшим скачком по оси Y, но я уверен, что это легко понять.

изменено "Vector3 shootDirection = новый Vector3 (direction.x, 0.0f, direction.y);"

в Vector3 shootDirection = Camera.main.transform.forward;

Спасибо всем!

0 голосов
/ 26 октября 2018

Как указано в комментариях выше, для съемки вперед используйте камеры transform.forward

...