using System.Data;
using UnityEngine;
public class PositionController : MonoBehaviour
{
public GameObject goMould; // 模具下_8
public GameObject goMesa; // Mesa-1-solid1
public GameObject goMartelo;
public GameObject goHaste;
public GameObject goFlange;
public GameObject goNONE1;
public float downDistanceMould = 0.1f; // 模具下_8 下压的距离
public float downDistanceMesa = 0.1f; // Mesa-1-solid1 下压的距离
public float downDistanceMartelo = 0.1f;
public float downDistanceHaste = 0.1f;
public float downDistanceFlange = 0.1f;
public float speed = 0.05f; // 移动的速度
float nextTime;
float rate = 0.5f;
DataTable table;
int count = 0;
int currentInt = -1;
DataSet ds = null;
Vector3 initialPositionMould;
Vector3 downPositionMould;
Vector3 initialPositionMesa;
Vector3 downPositionMesa;
Vector3 initialPositionMartelo;
Vector3 downPositionMartelo;
Vector3 initialPositionHaste;
Vector3 downPositionHaste;
Vector3 initialPositionFlange;
Vector3 downPositionFlange;
// Start is called before the first frame update
void Start()
{
// 初始化模具下_8的位置
initialPositionMould = goMould.transform.position;
downPositionMould = initialPositionMould - new Vector3(0, downDistanceMould, 0);
// 初始化Mesa-1-solid1的位置
initialPositionMesa = goMesa.transform.position;
downPositionMesa = initialPositionMesa - new Vector3(0, downDistanceMesa, 0);
initialPositionMartelo = goMartelo.transform.position;
downPositionMartelo = initialPositionMartelo - new Vector3(0, downDistanceMartelo, 0);
initialPositionHaste = goHaste.transform.position;
downPositionHaste = initialPositionHaste - new Vector3(0, downDistanceHaste, 0);
initialPositionFlange = goFlange.transform.position;
downPositionFlange = initialPositionFlange - new Vector3(0, downDistanceFlange, 0);
// 假设数据库中的表名为"test"
SqlAccess sql = new SqlAccess();
string[] items = { "X0", "Y0" };
string[] col = { };
string[] op = { };
string[] val = { };
ds = sql.SelectWhere("test", items, col, op, val);
if (ds != null)
{
table = ds.Tables[0];
count = table.Rows.Count;
}
}
// Update is called once per frame
void Update()
{
if (Time.time > nextTime && currentInt < (count - 1) && ds != null)
{
currentInt++;
// 时间间隔越大,移动速度越慢
nextTime = Time.time + rate;
string yValue = table.Rows[currentInt][table.Columns[0]].ToString(); // 读取Y轴的位置(字符串类型)
string xValue = table.Rows[currentInt][table.Columns[1]].ToString();
// 根据数据库的值移动游戏对象
if (yValue == "1")
{
// 悬停状态
goMould.transform.position = initialPositionMould;
goMesa.transform.position = initialPositionMesa;
goMartelo.transform.position = initialPositionMartelo;
goHaste.transform.position = initialPositionHaste;
goFlange.transform.position = initialPositionFlange;
}
else if (yValue == "0")
{
// 压下状态
goMould.transform.position = downPositionMould;
goMesa.transform.position = downPositionMesa;
goMartelo.transform.position = downPositionMartelo;
goHaste.transform.position = downPositionHaste;
goFlange.transform.position = downPositionFlange;
}
if (goNONE1 != null)
{
if (xValue == "1")
{
// Y0为1时,NONE1运行
goNONE1.transform.Translate(-1 * Vector3.forward * speed * Time.deltaTime, Space.World);
}
else if (xValue == "0")
{
// Y0为0时,NONE1停止
goNONE1.transform.Translate(-1 * Vector3.back * speed * Time.deltaTime, Space.World);
}
}
// 在Console窗口中显示位置信息
Debug.Log("模具下_8 新位置: " + goMould.transform.position);
Debug.Log("Mesa-1-solid1 新位置: " + goMesa.transform.position);
Debug.Log("Martelo-1-solid1 新位置: " + goMartelo.transform.position);
Debug.Log("Haste-1-solid1 新位置: " + goMartelo.transform.position);
Debug.Log("Flange-1-solid1 新位置: " + goMartelo.transform.position);
}
}
}
这上面是模具下压悬停运动的代码,根据这代码写出新的c#代码,要求在unity中,有了模具下_8这个模型之后,模具下_8运动状态为下压和悬停状态来回切换,要求只要模具出现了下压状态,那么Text文字内容就更新为0,并且在有下压状态之后的3s内,模具再次有下压状态,那么Text文字内容就一直更新为0,相反如果模具在有下压状态之后的3s内,模具没有再次发生下压状态,,那么Text文字内容就更新为1。