using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OnUpKeyPress_Throw : MonoBehaviour
{
// 플레이어 이동, 반전관련 변수선언
public float speed = 5;
float vx; // x축 이동량
bool leftFlag = false; // 좌우반전
bool upFlag = false; // 위쪽 방향키 눌렸는지 여부
//프리팹 만들기------------------------------------
public GameObject sushi; // 공장에 넘겨줄 원본(프리팹)
GameObject newSushi; // 공장에 찍어낸 새로운 아이템(프리팹)
//프리팹이 던져지는 위치와 힘을 지정
public float offsetY = 1; // 프리팹이 던져지는 간격(Y축)
public float throwX = 4; // x축으로 던지는 힘
public float throwY = 8; // y축으로 던지는 힘
// 메인카메라와 관련된 변수선언
Vector3 camPos; // 카메라의 원래위치를 저장해두는 변수
void Start()
{
// 카메라의 원래위치를 저장해둔다.
camPos = Camera.main.transform.position;
}
void Update()
{
// 키보드 좌우방향키 입력 검사
vx = 0; // 초기화
if (Input.GetKey("right"))
{
vx = speed;
leftFlag = false;
}
if (Input.GetKey("left"))
{
vx = -speed;
leftFlag = true;
}
}
void FixedUpdate()
{
// 플레이어 이동, 반전
transform.Translate(vx / 50, 0, 0);
GetComponent<SpriteRenderer>().flipX = leftFlag;
if (Input.GetKey("up")) // 위쪽 키가 눌리면
{
if (upFlag == false)
{
upFlag = true;
// 프리팹이 플레이어의 위치에 나오도록(프리팹이 나올 위치)
Vector3 newPos = this.transform.position; // 현재 플레이어의 위치값
newPos.y += offsetY; // 플레이어의 조금 위에
newPos.z = -5; // 카메라의 앞에
// 프리팹을 만들고, 프리팹이 나올 위치를 설정
newSushi = Instantiate(sushi);
newSushi.transform.position = newPos;
// 프리팹 던지기(AddForce)
Rigidbody2D rb = newSushi.GetComponent<Rigidbody2D>();
if (leftFlag == true)
{
rb.AddForce(new Vector2(-throwX, throwY), ForceMode2D.Impulse);
}
else
{
rb.AddForce(new Vector2(throwX, throwY), ForceMode2D.Impulse);
}
}
}
else
{
upFlag = false;
}
}
// 모든 오브젝트의 움직임이 끝난 후에 카메라를 이동시킨다.
void LateUpdate()
{
// 일단 플레이어의 위치를 저장
Vector3 playerPos = transform.position; // x, y, z
// 그 플레이어의 위치를 카메라위치로 변경
playerPos.z = -10; // 카메라의 위치값(z)
playerPos.y = camPos.y; // 카메라의 원래 높이값
Camera.main.transform.position = playerPos;
}
}