c# - 如何参考 2D 对象上的 Z 轴以在场景中的玩家身后生成弹丸?
问题描述
我编写了一个运行良好的 Shoot 函数,但我希望弹丸对象在场景中的玩家对象后面生成。我尝试将弹丸的预制件在 z 轴上设置为 -1,但这似乎不起作用。我怀疑这是因为它被对象的实例化覆盖了。我还简单地尝试使用 Vector3 使用以下代码生成弹丸,但这也不起作用。
这是我的代码。
Vector3 spawn = new Vector3(0, 0.5f, -1)
rb.position + spawn
弹道脚本:
public class Projectile : MonoBehaviour
{
Rigidbody2D rb;
Vector2 launch = new Vector2(0, 1);
void Awake()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
if (transform.position.magnitude > 1000.0f)
{
Destroy(gameObject);
}
}
void OnCollisionEnter2D(Collision2D other)
{
Destroy(gameObject);
}
public void Shoot(float force)
{
rb.AddForce(launch * force);
}
}
播放器脚本中的拍摄功能:
void Shoot()
{
GameObject projectileObject = Instantiate(projectilePrefab, rb.position + Vector2.up * 0.5f, Quaternion.identity);
Projectile projectile = projectileObject.GetComponent<Projectile>();
projectile.Shoot(300);
}
解决方案
如果弹丸和玩家都是 2d 并且您只希望弹丸在玩家后面渲染,则它应该在不同的排序层中,或者它应该低于sortingOrder
玩家的渲染器。
请参阅此处了解更多信息。
推荐阅读
- node.js - model.predict.print() 未在 tensorflow.js 中显示所有结果
- javascript - 单击按钮时如何创建多个标签?当它们太多时,如何使它们消失?
- html - 如果它是一个重复的条目,它应该拒绝,如果它不是它应该插入到 sql iam 获取partyname 为 null
- c++ - 从 C++ 使用 C 库 (spglib)
- ios - 从模式页面(表单)调用时未显示 Xamarin Forms iOS UIImagePickerController
- flutter - Flutter 使用 Inherited Widget 更新状态
- unit-testing - 无法测试静态资产
- android - Android 无法通过 API 接收多条记录
- javascript - 将 Javascript 呈现的网页内容读入 R
- hadoop - 连接已经关闭 Hive