我需要统一的项目帮助
我想通过单击停止每个对象。
到目前为止我做了什么: 我所有的对象都旋转,但是当我单击任意位置时,它们都会停止,仅当我单击每个对象时,才需要它们停止。
这是我使用System.Collections的代码; 使用System.Collections.Generic; 使用UnityEngine;
公共类EarthScript:MonoBehaviour { 公共布尔rotateObject = true;
public GameObject MyCenter;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
if(rotateObject == true)
{
rotateObject = false;
}
else
{
rotateObject = true;
}
}
if(rotateObject == true)
{
Vector3 axisofRotation = new Vector3(0,1,0);
transform.RotateAround(MyCenter.transform.position,axisofRotation, 30*Time.deltaTime);
transform.Rotate(0,Time.deltaTime*30,0,Space.Self);
}
}
}`
答案 0 :(得分:0)
有两种方法可以实现这一目标。两种方式都需要您在对象上附加对撞机。
一种方法是通过光标从摄像机射线投射到场景中,以检查当前在光标下的对象。
第二种方法是使用unity的EventSystem。您将需要在相机上附加一个PhysicsRaycaster,但是随后您会从事件系统中获得回调,从而简化了检测(由Unity处理,因此无需编写代码)
using UnityEngine;
using UnityEngine.EventSystems;
public class myClass: MonoBehaviour, IPointerClickHandler
{
public GameObject MyCenter;
public void OnPointerClick (PointerEventData e)
{
rotateObject=!rotateObject;
}
void Update()
{
if(rotateObject == true)
{
Vector3 axisofRotation = new Vector3(0,1,0);
transform.RotateAround(MyCenter.transform.position,axisofRotation, 30*Time.deltaTime);
transform.Rotate(0,Time.deltaTime*30,0,Space.Self);
}
}