using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Overlap
{
public class OverlapPlayer : MonoBehaviour
{
[SerializeField]
private float radius = 10f;
private GameObject closestWeapon;
private float closestWeaponDistance = Mathf.Infinity;
[SerializeField]
private Transform weaponHolder;
private int num;
private Collider[] colls = new Collider[6];
private GameObject targetBarrel;
private float targetBarrelDistance = Mathf.Infinity;
[SerializeField]
private GameObject bullet;
private void Start()
{
int layerMask = 1 << LayerMask.NameToLayer("Gun");
int cnt = Physics.OverlapSphereNonAlloc(this.transform.position, this.radius, colls, layerMask);
for (int i = 0; i < cnt; i++)
{
float distance = (colls[i].transform.position - this.transform.position).magnitude;
if (distance < closestWeaponDistance)
{
this.closestWeaponDistance = distance;
this.closestWeapon = colls[i].gameObject;
this.num = i;
}
}
Destroy(colls[num].gameObject);
GameObject go = Instantiate(this.closestWeapon, this.weaponHolder);
go.transform.localPosition = Vector3.zero;
go.transform.localRotation = Quaternion.identity;
}
private void Update()
{
GameObject[] barrels = GameObject.FindGameObjectsWithTag("Barrel");
foreach (GameObject barrel in barrels)
{
float distance = (barrel.transform.position - this.transform.position).magnitude;
if (distance <= targetBarrelDistance)
{
this.targetBarrelDistance = distance;
this.targetBarrel = barrel;
}
}
if (Input.GetMouseButtonDown(0))
{
Attack(targetBarrel);
}
}
private void Attack(GameObject target)
{
this.transform.LookAt(target.transform.position);
GameObject go = Instantiate(bullet);
go.transform.position = this.transform.position;
go.transform.LookAt(target.transform.position);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Overlap
{
public class OverlapBullet : MonoBehaviour
{
private Rigidbody rb;
// Start is called before the first frame update
void Start()
{
this.rb = GetComponent<Rigidbody>();
rb.AddForce(Vector3.forward * 1500f);
}
}
}
'유니티 심화' 카테고리의 다른 글
(수정중) 유니티 New Input System 사용하여 이동 구현 (0) | 2023.09.01 |
---|---|
유니티 new Input System으로 조이스틱 사용하기 (0) | 2023.08.31 |
플레이어 충돌 시 법선벡터(normal)방향으로 회전 (0) | 2023.08.21 |
궁수의 전설 (0) | 2023.08.20 |
유니티 카메라 줌인 + 회전 따라가기 (0) | 2023.08.17 |