StartCoroutineを使用する必要がありますか?オブジェクトを上下に移動するにはどうしたらいいですか?
using UnityEngine;
using System.Collections;
using System.Reflection;
public class DetectPlayer : MonoBehaviour {
GameObject target;
int counter = 0;
public static bool touched = false;
public float moveSpeed = 3.0f;
public float smooth = 1f;
private float distanceTravelled;
private Vector3 startPositon;
public float distanceToTravel = 50;
private void Start()
{
startPositon = new Vector3(target.transform.position.x, target.transform.position.y, target.transform.position.z);
}
private void Update()
{
if (RaiseWalls.raised == true && touched == true)
{
MoveElevator();
//touched = false;
}
}
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "ThirdPersonController") // "Platform"
{
Debug.Log("Touching Platform");
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.name == "ThirdPersonController") // "OnTop Detector"
{
counter = 0;
Debug.Log("On Top of Platform");
target = GameObject.Find("Elevator");
GameObject findGo = GameObject.Find("ThirdPersonController");
GameObject findGo1 = GameObject.Find("Elevator");
findGo.transform.parent = findGo1.transform;
GameObject go = GameObject.Find("CubeToRaise");
go.GetComponent<RaiseWalls>();
Debug.Log("The button clicked, raising the wall");
touched = true;
}
}
void OnTriggerExit(Collider other)
{
GameObject findGo = GameObject.Find("ThirdPersonController");
findGo.transform.parent = null;
}
void MoveElevator()
{
if (distanceTravelled == distanceToTravel)
{
}
else
{
target.transform.localPosition += target.transform.up * Time.deltaTime * moveSpeed;
distanceTravelled += Vector3.Distance(target.transform.position, startPositon);
}
}
}
この場合、MoveElvator関数のエレベーターが上がっています。 今、私はそれが高さ50になると、戻って下に移動し始め、地面に出入りすると止まるようにしたいと考えています。
だから私は
if (distanceTravelled == distanceToTravel)
{
}
でもない、それは下に移動させると、地面に取得するときに停止する方法がわからを追加しました。
これは、C#unityscriptではありません。ところで、あなたの問題を理解するのは難しいので、答えを得ることはありません。 「今は、高さが50になってから下に移動し、地面に出入りするときに止まるようにしたいと思っています」...地上にいるのはどこで検知されていますか? – Programmer
Btwでは、移動距離は間違っています。これは、各フレームに移動した合計距離を加算するためです。 'distanceTravelled = Vector3.Distance(target.transform.position、startPositon);' – FINDarkside