necroview: мышь облетает руки, персонаж стоит (necroview mouse off - как было)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
1b5c68d6f2
commit
606f9c3816
+30
-1
@@ -21,6 +21,13 @@ namespace NecromancerTome
|
||||
static Vector3 _target;
|
||||
static Camera _cam;
|
||||
const float TurnSpeed = 60f, ZoomSpeed = 0.4f;
|
||||
/// <summary>Мышь облетает руки, персонаж стоит (16.10: «я поворачиваю мышь, а туловище проворачивается следом, и я
|
||||
/// вижу тело только с одной позиции»). Поворот игрока каждый кадр возвращается к снимку при включении.</summary>
|
||||
public static bool Mouse = true;
|
||||
public static float MouseSpeed = 3f;
|
||||
static Vector3 _lockRot;
|
||||
static Quaternion _lockCam;
|
||||
static bool _mouseBroken;
|
||||
|
||||
public static string Start(float _yaw, float _pitch, float _dist)
|
||||
{
|
||||
@@ -47,6 +54,8 @@ namespace NecromancerTome
|
||||
_cam.nearClipPlane = 0.01f;
|
||||
_cam.gameObject.SetActive(true);
|
||||
HandPose.HoldStill = true;
|
||||
_lockRot = pl.rotation;
|
||||
_lockCam = pc.localRotation;
|
||||
On = true;
|
||||
return "осмотр включён: вокруг " + Yaw + ", высота " + Pitch + ", расстояние " + Dist;
|
||||
}
|
||||
@@ -76,6 +85,22 @@ namespace NecromancerTome
|
||||
return;
|
||||
}
|
||||
float dt = Time.unscaledDeltaTime;
|
||||
EntityPlayerLocal pl = GameManager.Instance?.World?.GetPrimaryPlayer();
|
||||
if (Mouse && pl != null && !_mouseBroken)
|
||||
{
|
||||
try
|
||||
{
|
||||
Yaw += Input.GetAxis("Mouse X") * MouseSpeed;
|
||||
Pitch = Mathf.Clamp(Pitch - Input.GetAxis("Mouse Y") * MouseSpeed, -85f, 85f);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
_mouseBroken = true; // нет оси мыши в старом вводе - остаётся цифровой блок
|
||||
Debug.LogWarning("[NecromancerTome] necroview: мышь не читается (" + e.Message + ")");
|
||||
}
|
||||
pl.rotation = _lockRot;
|
||||
pc.localRotation = _lockCam;
|
||||
}
|
||||
if (Input.GetKey(KeyCode.Keypad4)) Yaw -= TurnSpeed * dt;
|
||||
if (Input.GetKey(KeyCode.Keypad6)) Yaw += TurnSpeed * dt;
|
||||
if (Input.GetKey(KeyCode.Keypad8)) Pitch = Mathf.Min(85f, Pitch + TurnSpeed * dt);
|
||||
@@ -103,7 +128,7 @@ namespace NecromancerTome
|
||||
public class ConsoleCmdNecroView : ConsoleCmdAbstract
|
||||
{
|
||||
public override string[] getCommands() => new[] { "necroview" };
|
||||
public override string getDescription() => "NecromancerTome: осмотр рук со стороны - on [вокруг высота расстояние]|off|set вокруг высота расстояние|show; цифровой блок 4/6 8/2 +/- 5";
|
||||
public override string getDescription() => "NecromancerTome: осмотр рук со стороны - on [вокруг высота расстояние]|off|set вокруг высота расстояние|mouse [off]|show; мышь или цифровой блок 4/6 8/2 +/- 5";
|
||||
|
||||
static bool Num(List<string> _p, int _i, out float _v)
|
||||
{
|
||||
@@ -134,6 +159,10 @@ namespace NecromancerTome
|
||||
NecroView.Pitch = p2;
|
||||
NecroView.Dist = d2;
|
||||
break;
|
||||
case "mouse":
|
||||
NecroView.Mouse = !(_params.Count > 1 && _params[1] == "off");
|
||||
Out("мышь " + (NecroView.Mouse ? "облетает руки" : "крутит персонажа, облёт - цифровой блок"));
|
||||
return;
|
||||
case "show":
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user