したがって、このコードは何らかの理由で応答していません。常にプレイヤーと向き合うことを試みている敵がいます(敵はプレイヤーの頭を定期的に前後に急降下します)。しかし、タイマーが0に達するたびにフリップを発生させる以外は、実際にはそれほどうまく機能しませんが、フリップ機能を機能させることはできません。フリッパー機能は問題ないことを私は知っています。私はすでにそれとすべてをテストしました。プレイヤーが敵の左側にいるとき、向きを変える、またはその逆を敵に伝える方法がわかりません。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class dragoonDetection : MonoBehaviour {
private Rigidbody2D rb;
private Animator anim;
public Transform Player;
private bool facingRight = true;
void Start ()
{
rb = GetComponent<Rigidbody2D> ();
anim = GetComponent<Animator> ();
}
void Update()
{
Flip();
}
void Flip()
{
if (Player.transform.localScale.x > 0) {
transform.localScale = new Vector3 (1.69f, 1.54f, 1f);
}
if (Player.transform.localScale.x < 0) {
transform.localScale = new Vector3 (-1.69f, 1.54f, 1f);
}
}
void Flipper()
{
facingRight = !facingRight;
Vector2 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
何かアイデアはありますか?FindGameObjectは実際にはプレーヤーのスクリプトを検索していないため、使用は避けたいと思います。プレーヤーにスクリプトが添付されていない子トランスフォームを探しています。また、ゲーム内でいつでも切り替えることができる2つの異なるプレーヤーのGameObjectがあるため、その点では実際には機能しません。
鳥の位置を常にプレーヤーに向けたい場合は、鳥の位置でプレーヤーの位置に対して何らかのチェックを実行する必要があります。必要最低限の方法は、2つのオブジェクトのx位置を比較し、それに応じてスケールを変更することです。
void Update()
{
transform.localScale = new Vector3(getDir()*1.69f, 1.54f, 1);
}
private int getDir()
{
if (player.transform.position.x < transform.position.x)
return -1;
else
return 1;
}
変更がないときにフレームごとにスケールが更新されないように、ここにいくつかの追加のチェックをスローする必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加