【发布时间】:2018-05-22 22:17:41
【问题描述】:
因此,无论出于何种原因,这段代码都没有响应。我有一个敌人,我一直试图面对玩家(敌人会周期性地来回掠过玩家的头)。但是,除了在计时器达到 0 时发生翻转(这并不能很好地工作)之外,我无法让翻转功能工作。我知道 Flipper 功能很好;我已经测试了它和一切。我只是不知道如何告诉敌人当玩家在它的左边时,转向,反之亦然。
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,因为它实际上并不是在寻找玩家脚本。它正在寻找一个没有脚本附加到播放器的子变换。而且因为我有两个不同的玩家游戏对象,你可以在游戏中随时切换到,所以在这方面它对我来说并不适用。
【问题讨论】:
-
这看起来会不停地来回 Flip(),因为 Flip() 中的条件之一将始终为真。您需要使用 some 方法获取您的播放器,然后将鸟类 x 位置与播放器 x 位置进行比较,然后根据其 >0 或 进行翻转
-
k 我只是将其更改为依赖于在另一个脚本上变为真或假的两个布尔值。左边是龙飞离开的时候。右边是龙飞的时候。但我仍然在寻找敌方的龙来翻转它没有做。
-
你想让它一直面向玩家吗?或者只是让龙面对它飞行的方向? Flipper() 也永远不会在这里被调用。
-
始终面对玩家。我没有在 Update() 中调用 Flipper,因为它是在 Flip 函数中调用的。我刚刚用稍微不同的方法更新了代码。结果相同。但我要把 Flipper 留在里面,以便其他人可以看到。
-
如果这是一个精灵,你为什么要改变 xscale?为什么不在精灵渲染器本身上使用翻转布尔值?
标签: c# unity3d transform scale