模型预览和旋转
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖
|
||||
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using FairyGUI;
|
||||
using NBC;
|
||||
@@ -9,30 +10,99 @@ namespace NBF
|
||||
public partial class ModelTexture : GComponent
|
||||
{
|
||||
ModelRenderImage _renderImage;
|
||||
private Vector2 _startPos;
|
||||
private Vector3 _startRot;
|
||||
private SwipeGesture _swipeGesture;
|
||||
|
||||
public float ZoomValue = 5;
|
||||
public float MinZoom = 1;
|
||||
public float MaxZoom = 15;
|
||||
|
||||
|
||||
private void OnInited()
|
||||
{
|
||||
_renderImage = new ModelRenderImage(ModelHolder.asGraph);
|
||||
//RenderImage是不透明的,可以设置最多两张图片作为背景图
|
||||
// _renderImage.SetBackground(contentPane.GetChild("frame").asCom.GetChild("n0"), contentPane.GetChild("n20"));
|
||||
SetRotateListening();
|
||||
}
|
||||
|
||||
public void LoadModel(string model)
|
||||
/// <summary>
|
||||
/// 加载资产模型
|
||||
/// </summary>
|
||||
/// <param name="configId"></param>
|
||||
public void LoadAsset(int configId)
|
||||
{
|
||||
_renderImage.LoadModel("Role/npc");
|
||||
_renderImage.modelRoot.localPosition = new Vector3(0, -1.0f, 5f);
|
||||
_renderImage.modelRoot.localScale = new Vector3(1, 1, 1);
|
||||
_renderImage.modelRoot.localRotation = Quaternion.Euler(0, 120, 0);
|
||||
if (_renderImage == null)
|
||||
{
|
||||
_renderImage = new ModelRenderImage(ModelHolder.asGraph);
|
||||
}
|
||||
|
||||
var model = _renderImage.LoadModel("Role/npc");
|
||||
_renderImage.modelRoot.localScale = Vector3.one;
|
||||
|
||||
var previewableAsset = model.GetComponent<PreviewableAsset>();
|
||||
if (previewableAsset != null)
|
||||
{
|
||||
_renderImage.modelRoot.localPosition = new Vector3(0, 0, previewableAsset.zoom.zoom);
|
||||
_renderImage.modelRoot.localRotation = Quaternion.Euler(previewableAsset.rotation);
|
||||
}
|
||||
else
|
||||
{
|
||||
_renderImage.modelRoot.localPosition = new Vector3(0, 0, 3);
|
||||
_renderImage.modelRoot.localRotation = Quaternion.Euler(Vector3.zero);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetBackground(GObject image1)
|
||||
/// <summary>
|
||||
/// 加载角色模型
|
||||
/// </summary>
|
||||
public void LoadRole()
|
||||
{
|
||||
_renderImage.SetBackground(image1);
|
||||
}
|
||||
|
||||
public void SetBackground(GObject image1, GObject image2)
|
||||
private void SetRotateListening()
|
||||
{
|
||||
_renderImage.SetBackground(image1, image2);
|
||||
var dragObj = TouchHolder;
|
||||
var gesture1 = new SwipeGesture(dragObj);
|
||||
gesture1.onMove.Set(OnSwipeMove);
|
||||
gesture1.onEnd.Set(OnSwipeEnd);
|
||||
}
|
||||
|
||||
|
||||
private void OnSwipeMove(EventContext context)
|
||||
{
|
||||
var gesture = context.sender as SwipeGesture;
|
||||
if (gesture == null) return;
|
||||
var v = Vector3.zero;
|
||||
|
||||
|
||||
if (context.inputEvent.button == 0)
|
||||
{
|
||||
v.y = -gesture.delta.x * 0.2f;
|
||||
v.z = -gesture.delta.y * 0.2f;
|
||||
if (!gesture.snapping)
|
||||
{
|
||||
v.y = 0;
|
||||
v.z = 0;
|
||||
}
|
||||
|
||||
if (Mathf.Abs(v.y) < 1) //消除手抖影响
|
||||
v.y = 0;
|
||||
if (Mathf.Abs(v.z) < 1) //消除手抖影响
|
||||
v.z = 0;
|
||||
_renderImage.StartRotate(v);
|
||||
}
|
||||
else
|
||||
{
|
||||
v.y = -gesture.delta.y * 0.005f;
|
||||
v.x = gesture.delta.x * 0.005f;
|
||||
//平移
|
||||
var pos = _renderImage.modelRoot.localPosition;
|
||||
_renderImage.modelRoot.localPosition = new Vector3(pos.x + v.x, pos.y + v.y, pos.z);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnSwipeEnd(EventContext context)
|
||||
{
|
||||
_renderImage.StopRotate();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user