(client) feat:实现摄像机跟踪与移动,实现任意位置生成实体,实现更安全的资源加载方式(指定unity内部加载资源) (#42)
Co-authored-by: zzdxxz <2079238449@qq.com> Co-committed-by: zzdxxz <2079238449@qq.com>
This commit is contained in:
@ -14,6 +14,8 @@ namespace Entity
|
||||
public Entity entity;
|
||||
|
||||
private bool _select = false;
|
||||
|
||||
public static Vector3 minimum=new(0.5f,0.5f,0.5f);
|
||||
|
||||
public void Init()
|
||||
{
|
||||
@ -42,20 +44,32 @@ namespace Entity
|
||||
/// </returns>
|
||||
public Vector3 GetSize()
|
||||
{
|
||||
// 获取所有子对象的 Renderer 组件
|
||||
var renderers = body.GetComponentsInChildren<Renderer>();
|
||||
|
||||
// 如果没有找到任何 Renderer,返回一个默认值 (-1, -1, -1)
|
||||
if (renderers.Length == 0)
|
||||
{
|
||||
return new(-1, -1);
|
||||
return minimum;
|
||||
}
|
||||
|
||||
// 初始化 totalBounds 为第一个 Renderer 的 bounds
|
||||
var totalBounds = renderers[0].bounds;
|
||||
|
||||
// 遍历剩余的 Renderer,将它们的 bounds 合并到 totalBounds 中
|
||||
for (var i = 1; i < renderers.Length; i++)
|
||||
{
|
||||
totalBounds.Encapsulate(renderers[i].bounds);
|
||||
}
|
||||
|
||||
// 获取合并后的包围盒的大小
|
||||
var size = totalBounds.size;
|
||||
|
||||
// 确保每个维度的大小都不小于 0.5
|
||||
size.x = Mathf.Max(size.x, 0.5f);
|
||||
size.y = Mathf.Max(size.y, 0.5f);
|
||||
size.z = Mathf.Max(size.z, 0.5f);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
@ -78,7 +92,7 @@ namespace Entity
|
||||
{
|
||||
var rightMenu = Prefab.RightMenuPrefab.Instance;
|
||||
rightMenu.Init(GetMenu());
|
||||
rightMenu.transform.position=Input.mousePosition;
|
||||
rightMenu.transform.position = Input.mousePosition;
|
||||
rightMenu.Show();
|
||||
}
|
||||
}
|
||||
@ -86,12 +100,31 @@ namespace Entity
|
||||
private List<(string name, UnityAction callback)> GetMenu()
|
||||
{
|
||||
var result = new List<(string name, UnityAction callback)>();
|
||||
if(entity.PlayerControlled)
|
||||
result.Add(("结束操控",()=>entity.PlayerControlled=false));
|
||||
if (entity.PlayerControlled)
|
||||
result.Add(("结束操控", EndControl));
|
||||
else
|
||||
result.Add(("手动操控",()=>entity.PlayerControlled=true));
|
||||
result.Add(("杀死",()=>entity.Kill()));
|
||||
result.Add(("手动操控", StartControl));
|
||||
result.Add(("杀死", () => entity.Kill()));
|
||||
result.Add(("变成笨蛋", BecomeDefault));
|
||||
return result;
|
||||
}
|
||||
|
||||
private void BecomeDefault()
|
||||
{
|
||||
entity.Kill();
|
||||
Managers.EntityManage.Instance.GenerateDefaultEntity(entity.Position);
|
||||
}
|
||||
|
||||
private void StartControl()
|
||||
{
|
||||
entity.PlayerControlled = true;
|
||||
CameraControl.CameraControl.Instance.focusedEntity=entity;
|
||||
}
|
||||
|
||||
private void EndControl()
|
||||
{
|
||||
entity.PlayerControlled = false;
|
||||
CameraControl.CameraControl.Instance.focusedEntity=null;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user