Проект для начинающих Unity — один скрипт прерывает другойC#

Место общения программистов C#
Anonymous
Проект для начинающих Unity — один скрипт прерывает другой

Сообщение Anonymous »

Я новичок в программировании и сейчас работаю над небольшим шутером в Unity. Я только что реализовал отдачу, но мой сценарий «PlayerCam» (строка 31: Transform.rotation = Quaternion.Euler(xRotation, yRotation, 0);) прерывает мой сценарий «Откат», точнее, функцию Эйлера. Без этой лески отдача работает, но я явно не могу двигаться. При этом экран просто немного трясется (сбрасывается каждый кадр и не продолжается отдача). Что мне нужно изменить?
PlayerCam.cs

Код: Выделить всё

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

public class PlayerCam : MonoBehaviour
{
public float sensX;
public float sensY;

public Transform orientation;

float xRotation;
float yRotation;

private void Start()
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}

private void Update()
{
float mouseX = Input.GetAxis("Mouse X") * sensX;
float mouseY = Input.GetAxis("Mouse Y") * sensY;

yRotation += mouseX;

xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90f, 90f);

transform.rotation = Quaternion.Euler(xRotation, yRotation, 0);
orientation.rotation = Quaternion.Euler(0, yRotation, 0);
}
}
Recoil.cs

Код: Выделить всё

using UnityEngine;

public class Recoil : MonoBehaviour
{
private Vector3 currentRotation;
private Vector3 targetRotation;

[SerializeField] private float recoilX;
[SerializeField] private float recoilY;
[SerializeField] private float recoilZ;

[SerializeField] private float snappiness;
[SerializeField] private float returnSpeed;

void Start()
{

}

void Update()
{
targetRotation = Vector3.Lerp(targetRotation, Vector3.zero, returnSpeed * Time.deltaTime);
currentRotation = Vector3.Slerp(currentRotation, targetRotation, snappiness * Time.fixedDeltaTime);
transform.localRotation = Quaternion.Euler(currentRotation);
}

public void RecoilFire()
{
targetRotation += new Vector3(recoilX, Random.Range(-recoilY, recoilY), Random.Range(-recoilZ, recoilZ));
}
}
Спасибо за помощь :)

Подробнее здесь: https://stackoverflow.com/questions/736 ... ts-another

Вернуться в «C#»