Правильно цельтесь в танке - PullRequest
0 голосов
/ 04 августа 2020

Привет, я пытаюсь поджечь свой танк, но, похоже, не получается. Пушка моего танка имеет огневую точку, которая используется для стрельбы по объекту. FirePoint - это точка, из которой создается лазерный луч. Когда я поворачиваю турель, точка уходит. Дело в том, что это дитя орудийной башни. Что мне нужно сделать? Если я недостаточно объяснил это, спросите, и я постараюсь изо всех сил помочь.

Это мой скрипт контроллера плеера.

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

public class PlayerController : MonoBehaviour
{
public float Speed = 0;
public float MaxSpeed;
public float TurnSpeed;
public float AccelRate = 1;
public float BrakeSpeed = 1;
public GameObject LaserBeam;
public GameObject FirePoint;
public Vector3 Offset;
// Start is called before the first frame update
void Start()
{
    
}

// Update is called once per frame
void Update()
{
    // Increase forward when up arrow pressed
    if (Input.GetKey(KeyCode.UpArrow))
    {
        Speed = Speed + AccelRate;
    }
    // Move backward when down arrow pressed
    if (Input.GetKey(KeyCode.DownArrow))
    {
        Speed = Speed - AccelRate;
    }
    // Turn when left arrow pressed
    if (Input.GetKey(KeyCode.LeftArrow))
    {
        transform.Rotate(Vector3.down * Time.deltaTime * TurnSpeed);
    }
    // Turn when right arrow pressed
    if (Input.GetKey(KeyCode.RightArrow))
    {
        transform.Rotate(Vector3.up * Time.deltaTime * TurnSpeed);
    }
    // Reset vehicle rotation
    if (Input.GetKey(KeyCode.Return))
    {
        transform.eulerAngles = new Vector3(0, 0, 0);
    }
    // Press the brakes
    if (Input.GetKey(KeyCode.Space) && (Speed > 0 || Speed < 0))
    {
        Speed = Speed - BrakeSpeed;
        if (Speed < 0) { Speed = 0; }
    }
    //Ensure vehicle does not pass the maxspeed
    if (Speed > MaxSpeed)
    {
        Speed = MaxSpeed;
    }
    //Move vehicle
    transform.Translate(Vector3.right * Time.deltaTime * Speed);
    if (Input.GetKey(KeyCode.UpArrow) == false && Speed > 0)
    {
        Speed = Speed - AccelRate;
    }
    //Fire
    if (Input.GetKeyDown(KeyCode.F))
    {
        Instantiate(LaserBeam, FirePoint.transform.position + Offset, FirePoint.transform.rotation);
    }
}

}

1 Ответ

0 голосов
/ 04 августа 2020

Я исправил! Я просто установил смещение 0,0,0 и все заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...