【问题标题】:getting my 2d sprite flip to work depending on a Transform's location from it让我的 2d 精灵翻转工作取决于变换的位置
【发布时间】: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


【解决方案1】:

如果您希望它始终面向玩家,您将需要对带有小鸟位置的玩家位置进行某种检查。准系统方法就是比较两个对象的 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;
}

您应该在此处进行一些额外的检查,以防止它在没有变化时每帧更新比例。

【讨论】:

  • 哇,我以前从未见过这样使用 return 。我什至不知道那是一回事。谢谢你。这完全有效。我以前从未见过以这种方式在 Update 中调用的函数。完全向我展示了我是多么的菜鸟,哈哈。至于你关于额外检查的提示,我不知道该怎么做,哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多