簡単なsliderドラッグ制御
3217 ワード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class transformCtrl : MonoBehaviour {
public float moveSpeed;
public float sensitivityMouse;
public Transform root;
public Slider[] position;
public Slider[] rotation;
public Slider scale;
public float timer;
public bool isRote;
private void Start()
{
for(int i = 0;i sliderChange());
position[i].onValueChanged.AddListener((float value) => sliderChange());
}
scale.onValueChanged.AddListener((float value) => sliderChange());
}
// Update is called once per frame
void Update () {
//
float rx = Input.GetAxis("rotationX");
float ry = Input.GetAxis("rotationY");
float rz = Input.GetAxis("rotationZ");
//
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
float z = Input.GetAxis("moveZ");
//
float s = Input.GetAxis("carScale");
transform.Translate(z / moveSpeed, v / moveSpeed, h / moveSpeed);
transform.Rotate(rx, ry, rz);
transform.localScale = new Vector3(transform.localScale.x + s/moveSpeed, transform.localScale.y + s/moveSpeed, transform.localScale.z + s/moveSpeed);
if (Input.GetMouseButton(1))
{
transform.Rotate(-Input.GetAxis("Mouse Y") * sensitivityMouse, Input.GetAxis("Mouse X") * sensitivityMouse, 0);
}
if (Input.GetMouseButton(0))
{
if (isRote == true)
{
root.Rotate(new Vector3(rotation[0].value, rotation[1].value, rotation[2].value));
root.localScale = new Vector3(scale.value + root.localScale.x, scale.value + root.localScale.y, scale.value + root.localScale.z);
root.localPosition = new Vector3(position[0].value + root.localPosition.x, position[1].value + root.localPosition.y, position[2].value + root.localPosition.z);
}
}
else
{
isRote = false;
scale.value = 0;
rotation[0].value = rotation[1].value = rotation[2].value = 0;
position[0].value = position[1].value = position[2].value = 0;
}
}
public void sliderChange()
{
isRote = true;
}
public void resetPos(string pos)
{
Vector3 localPos = transform.localEulerAngles;
if(pos == "x")
{
position[0].value = 0;
}
if(pos == "y")
{
position[1].value = 0;
}
if(pos == "z")
{
position[2].value = 0;
}
if (pos == "rx")
{
localPos.x = 0;
transform.localEulerAngles = localPos;
}
if (pos == "ry")
{
localPos.y = 0;
transform.localEulerAngles = localPos;
}
if (pos == "rz")
{
localPos.z = 0;
transform.localEulerAngles = localPos;
}
}
}