该脚本附着在 3 个立方体上。每个立方体都有另一个标签。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class raytest : MonoBehaviour
{
public float duration;
public string tag;
private Vector3 originalpos;
private void Start()
{
originalpos = transform.position;
}
private void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
if (hit.transform.tag == tag)
{
if (transform.position.z != originalpos.z - 1)
StartCoroutine(moveToX(transform, new Vector3(transform.position.x, transform.position.y, transform.position.z - 1), duration));
}
else
{
StartCoroutine(moveToX(transform, originalpos, duration));
}
}
else
{
//reset
StartCoroutine(moveToX(transform, originalpos, duration));
}
}
bool isMoving = false;
IEnumerator moveToX(Transform fromPosition, Vector3 toPosition, float duration)
{
//Make sure there is only one instance of this function running
if (isMoving)
{
yield break; ///exit if this is still running
}
isMoving = true;
float counter = 0;
//Get the current position of the object to be moved
Vector3 startPos = fromPosition.position;
while (counter < duration)
{
counter += Time.deltaTime;
fromPosition.position = Vector3.Lerp(startPos, toPosition, counter / duration);
yield return null;
}
isMoving = false;
}
}
当鼠标悬停在游戏对象上并发射光线时,该对象开始移动。当光线没有击中物体时,物体就会移回到原来的位置。
但有时,当我将鼠标快速移动到两个甚至三个对象上时,下一个对象不会移动,直到第一个对象完成移动。有时,物体同时移动,第一个物体向前移动,而其余物体仍移回原始位置。
我不知道为什么有时当击中另一个物体时,它首先等待另一个物体回到原来的位置,然后才开始移动击中的物体?并且不要同时将它们一前一后移动。
这个想法是,如果我击中一个物体并开始向前移动,一旦我击中另一个物体,第一个物体应该开始向后移动,而击中的物体应该开始平行地向前移动。
牛魔王的故事
慕盖茨4494581
相关分类