Да, я прочитал около 30 различных похожих заголовков, прежде чем опубликовать это.Тем не менее, не было ничего относящегося к тому, что мне нужно.Я пытаюсь настроить ось Y моей камеры, чтобы она следовала за игроком по мере его продвижения через уровень;однако я не хочу, чтобы камера двигалась вверх и вниз во время прыжка, поэтому я следую за transform.position.y камеры, а не за игроком.
void Pjump()
{
if (Input.GetKeyDown(KeyCode.Space) && onFloor==true
|| Input.GetKeyDown(KeyCode.W) && onFloor==true)
{
player.velocity = new Vector2(0, jump);
onFloor = false;
isJumping = true; // Static Variable to pass onto CamFollow script
}
}
isJumping устанавливается в false внутри OnCollisionEnter2d () и вызывается внутри FixedUpdate ().
Теперь для скрипта CamFollow
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CamFollow : MonoBehaviour
{
private GameObject p1;
private bool isFollow;
[Header("Camera Offset Values")]
[SerializeField]
private float xOff;
[SerializeField]
private float yOff;
void Start()
{
p1 = GameObject.FindWithTag("Player");
isFollow = true;
}
void FixedUpdate()
{
if (isFollow)
{
if (Pmove.isJumping == false) // This code works fine
{
transform.position = new Vector3(p1.transform.position.x + xOff, p1.transform.position.y + yOff,
transform.position.z);
}
if(Pmove.isJumping == true) // This is where the problem is: Y-Axis
{
transform.position = new Vector3(p1.transform.position.x + xOff, transform.position.y + yOff,
transform.position.z);
}
}
}
}
Когда игрокпрыжки, игрок и все не-пользовательские объекты исчезают, пока игрок не коснется земли.