출처 : 골드메탈 유니티 뱀서라이크 11+
플레이어 무기 장착 표현하기
1. 양손배치
2. 반전 컨트롤 구현
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Hand : MonoBehaviour
{
public bool isLeft;
public SpriteRenderer spriter;
SpriteRenderer player;
// 왼손은 방향 오른손은 위치
Vector3 rightPos = new Vector3(0.35f, -0.15f, 0);
Vector3 rightPosReverse = new Vector3(-0.35f, -0.15f, 0);
Quaternion leftRot = Quaternion.Euler(0, 0, -35);
Quaternion leftRotReverse = Quaternion.Euler(0, 0, -135);
Vector3 leftPos = new Vector3(-0.17f, -0.37f, 0);
Vector3 leftPosReverse = new Vector3(0.19f, -0.37f, 0);
void Awake()
{
player = GetComponentsInParent<SpriteRenderer>()[1];
}
void LateUpdate()
{
bool isReverse = player.flipX;
if (isLeft ) // 근접무기
{
transform.localRotation = isReverse ? leftRotReverse : leftRot;
transform.localPosition = isReverse ? leftPosReverse : leftPos;
spriter.flipY = isReverse;
spriter.sortingOrder = isReverse ? 6 : 6;
}
else // 원거리 무기
{
transform.localPosition = isReverse ? rightPosReverse : rightPos;
spriter.flipX = isReverse;
spriter.sortingOrder = isReverse ? 6 : 4;
}
}
}
3. 데이터 추가
4. 데이터 연동
- weapon 스크립트
public void Init(ItemData data)
{
// Basic Set
name = "Weapon " + data.itemId;
transform.parent = player.transform; // 부모 오브젝트를 플레이어로 지정.
transform.localPosition = Vector3.zero; // 지역 위치인 localPosition을 원점으로 변경
// Property Set
id = data.itemId;
damage = data.baseDamage;
count = data.baseCount;
for ( int index = 0; index < GameManager.instance.pool.prefabs.Length; index++ )
{
if (data.projectile == GameManager.instance.pool.prefabs[index])
{
prefabId = index;
break;
}
}
switch (id)
{
case 0:
speed = -150;
Batch();
break;
default:
speed = 0.3f; // speed 값은 연사속도를 의미 : speed가 적을수록 많이 발사
break;
}
// Hand Set
Hand hand = player.hands[(int)data.itemType]; // 아이템 타입의 형식에 따라 적용
hand.spriter.sprite = data.hand;
hand.gameObject.SetActive(true);
player.BroadcastMessage("ApplyGear", SendMessageOptions.DontRequireReceiver); // BroadcastMessage : 특정 함수 호출을 모든 자식에게 방송하는 함수
}
| 유니티 공부(13) (1) | 2023.10.25 |
|---|---|
| 유니티 공부(12) (0) | 2023.10.20 |
| 유니티 공부(10) (0) | 2023.09.18 |
| 유니티 공부(9) (0) | 2023.09.12 |
| 유니티 공부(2) (0) | 2023.08.17 |