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 Vector3 _target;
|
||||||
static Camera _cam;
|
static Camera _cam;
|
||||||
const float TurnSpeed = 60f, ZoomSpeed = 0.4f;
|
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)
|
public static string Start(float _yaw, float _pitch, float _dist)
|
||||||
{
|
{
|
||||||
@@ -47,6 +54,8 @@ namespace NecromancerTome
|
|||||||
_cam.nearClipPlane = 0.01f;
|
_cam.nearClipPlane = 0.01f;
|
||||||
_cam.gameObject.SetActive(true);
|
_cam.gameObject.SetActive(true);
|
||||||
HandPose.HoldStill = true;
|
HandPose.HoldStill = true;
|
||||||
|
_lockRot = pl.rotation;
|
||||||
|
_lockCam = pc.localRotation;
|
||||||
On = true;
|
On = true;
|
||||||
return "осмотр включён: вокруг " + Yaw + ", высота " + Pitch + ", расстояние " + Dist;
|
return "осмотр включён: вокруг " + Yaw + ", высота " + Pitch + ", расстояние " + Dist;
|
||||||
}
|
}
|
||||||
@@ -76,6 +85,22 @@ namespace NecromancerTome
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
float dt = Time.unscaledDeltaTime;
|
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.Keypad4)) Yaw -= TurnSpeed * dt;
|
||||||
if (Input.GetKey(KeyCode.Keypad6)) Yaw += TurnSpeed * dt;
|
if (Input.GetKey(KeyCode.Keypad6)) Yaw += TurnSpeed * dt;
|
||||||
if (Input.GetKey(KeyCode.Keypad8)) Pitch = Mathf.Min(85f, Pitch + 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 class ConsoleCmdNecroView : ConsoleCmdAbstract
|
||||||
{
|
{
|
||||||
public override string[] getCommands() => new[] { "necroview" };
|
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)
|
static bool Num(List<string> _p, int _i, out float _v)
|
||||||
{
|
{
|
||||||
@@ -134,6 +159,10 @@ namespace NecromancerTome
|
|||||||
NecroView.Pitch = p2;
|
NecroView.Pitch = p2;
|
||||||
NecroView.Dist = d2;
|
NecroView.Dist = d2;
|
||||||
break;
|
break;
|
||||||
|
case "mouse":
|
||||||
|
NecroView.Mouse = !(_params.Count > 1 && _params[1] == "off");
|
||||||
|
Out("мышь " + (NecroView.Mouse ? "облетает руки" : "крутит персонажа, облёт - цифровой блок"));
|
||||||
|
return;
|
||||||
case "show":
|
case "show":
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user