首页 > 解决方案 > 正确瞄准坦克

问题描述

嗨,我正试图让我的坦克着火,但它似乎不起作用。我的坦克的枪有一个发射点,用于发射物体。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);
    }
}

}

标签: c#unity3d

解决方案


我修好了它!我只是将偏移量设置为 0,0,0 并且它起作用了。


推荐阅读