私はこれを何時間もしてきましたが、まだ解決策を考え出していません。プレイヤーが最終ゴールに達すると、プレイヤーは終了位置に合って移動を停止したいと思います。 ![alt text] [1]終了レベルを達成し、プレーヤトランスフォームと最終目標を一致させます。 Unity
私はプレーヤーを最終目標の子にしているように見ましたが、何も動かすことができませんでした。
これは私のスクリプトです。
public float speed = 10;
public float turnSpeed = 10;
public float maxVelocityChange = 10;
public float gravity = 10;
public bool isAlive;
public Text Score;
public int CollectibleValue;
//sounds
private AudioSource source;
public AudioClip Spark;
private bool grounded;
private Rigidbody _rigidbody;
private Transform PlayerTransform;
// Use this for initialization
void Start() {
StartLevel();
CollectibleValue = 0;
}
public void StartLevel(){
PlayerTransform = GetComponent<Transform>();
_rigidbody = GetComponent<Rigidbody>();
_rigidbody.useGravity = false;
_rigidbody.freezeRotation = true;
isAlive = true;
source = GetComponent<AudioSource>();
}
// Update is called once per frame
void FixedUpdate()
{
if (isAlive) {
PlayerTransform.Rotate (0, (Input.GetAxis ("Horizontal") * turnSpeed * Time.deltaTime), 0);
Vector3 targetVelocity = new Vector3 (0, 0, speed * Time.deltaTime);
targetVelocity = PlayerTransform.TransformDirection (targetVelocity);
targetVelocity = targetVelocity * speed;
Vector3 velocity = _rigidbody.velocity;
Vector3 velocityChange = targetVelocity - velocity;
velocityChange.x = Mathf.Clamp (velocityChange.x, -maxVelocityChange, maxVelocityChange);
velocityChange.z = Mathf.Clamp (velocityChange.z, -maxVelocityChange, maxVelocityChange);
velocityChange.y = 0;
_rigidbody.AddForce (velocityChange, ForceMode.VelocityChange);
_rigidbody.AddForce (new Vector3 (0, -gravity * _rigidbody.mass, 0));
}
Score.text = CollectibleValue.ToString();
}
void OnTriggerEnter(Collider Triggers) {
if (Triggers.tag == "Endgoal") {
isAlive = false;
// Here is where the player needs to stop and match the position of the end goal.
}
検索した後、私は私がターゲットのためのパブリック変数変換を作り、このコード行を使用し、私が答えであることを思いました。
void OnTriggerEnter(Collider Triggers) {
if (Triggers.tag == "Endgoal") {
isAlive = false;
PlayerTransform.transform.Translate (target.transform.position);
問題は、ターゲットが移動していない位置にプレーヤーが移動しても、プレーヤーがまだ前方に移動しているという問題です。 また、ブール 'isAlive'がfalseの場合、フォワードムーブはまだ行われていますか?