Unity stürzt beim Linksklick abC#

Ein Treffpunkt für C#-Programmierer
Guest
 Unity stürzt beim Linksklick ab

Post by Guest »

Ich habe ein Skript für den Kamerarückstoß für ein FPS-Spiel erstellt und es funktioniert, aber wenn ich die Rückstoßwerte auf einen anderen Wert als 0 setze, friert Unity ein und ich muss es per Task-Manager verwalten. Stürzt nicht ab, friert nur ein. Da meine Maus im Unity-Fenster gesperrt ist und das Drücken von Esc nichts bewirkt, stecke ich praktisch in einem Fegefeuer fest, wenn ich beim Testen meines Spiels die linke Maustaste drücke.
Ich habe es schon einmal versucht, ein öffentliches Spielobjekt zu verwenden und es zu drehen, aber die Kamera würde sich überhaupt nicht drehen, also habe ich localEulerAngles ausprobiert, da ich es früher im Skript verwendet habe.

Code: Select all

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

public class FirstPersonCamera : MonoBehaviour
{

// Variables
public Transform player;
public float mouseSensitivity = 2f;
float cameraVerticalRotation = 0f;
public float recoilAmount;
public float recoilRecoverySpeed;
float recoverToAngle;
float ammo = 12;

bool lockedCursor = true;

void Start()
{
// Lock and Hide the Cursor
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;

}

void Update()
{
// Collect Mouse Input

float inputX = Input.GetAxis("Mouse X")*mouseSensitivity;
float inputY = Input.GetAxis("Mouse Y")*mouseSensitivity;

// Rotate the Camera around its local X axis

cameraVerticalRotation -= inputY;
cameraVerticalRotation = Mathf.Clamp(cameraVerticalRotation, -90f, 90f);
transform.localEulerAngles = Vector3.right * cameraVerticalRotation;

// Rotate the Player Object and the Camera around its Y axis

player.Rotate(Vector3.up * inputX);
//detect shooting
if(Input.GetKeyDown(KeyCode.Mouse0))
{
ammo--;
addRecoil();
}

//detect reload
if(Input.GetKeyDown(KeyCode.R))
{
ammo = 12;
}
}
void addRecoil()
{
//set return angle
recoverToAngle = transform.localEulerAngles.y;
transform.localEulerAngles = new Vector3(0f, recoilAmount, 0f);

//recover from recoil to orig position upon firing
recoilRecover();
}

void recoilRecover()
{
while(transform.localEulerAngles.y > recoverToAngle)
{
transform.localEulerAngles = new Vector3(0f, -recoilRecoverySpeed, 0f);
}

}
}
Konnte nichts ausprobieren, da mir keine Lösungen einfielen, ich kann nicht herausfinden, wo es schief gelaufen ist, da Unity nicht reagiert.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post