210714
unity_beginner #19
Stone.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Stone : MonoBehaviour
{
Vector3 target;
// Start is called before the first frame update
void Start()
{
target = GameObject.Find("Ball").transform.position; // 초기 타겟 위치 -> Ball의 위치
}
// Update is called once per frame
void Update()
{
transform.position = Vector3.MoveTowards(transform.position, target, 0.1f); // 해당 방향으로 날아가게 한다.
}
}
2.돌이 회전하도록 기능 추가
transform.Rotate(new Vector3(0, 0, 5)); // z축의 방향으로 5도만큼 회전
3.일정 시간 간격으로 생성
-하나의 obstacle을 shooter로 변경 (obstacle script삭제)
shooter.cs
timeCount += Time.deltaTime; // 지난 update에서 지금 update사이의 시간
if(timeCount > 3) // timecount가 3을 넘긴 경우
{
// Debug.Log("돌을 던져라");
timeCount = 0;
}
일정 시간마다 실행되도록 하였다.
-stone 오브젝트를 projector view로 드래그하여 prefab 생성
public GameObject stone;
prefab의 stone을 사용하기 위한 게임 오브젝트 선언
shooter의 stone란에 stone 오브젝트를 넣어준다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shooter : MonoBehaviour
{
public GameObject stone; // prefab stone을 사용하기 위한 오브젝트
// Start is called before the first frame update
void OnCollisionEnter(Collision collision)
{
Vector3 direction = collision.gameObject.transform.position - transform.position;
direction = direction.normalized * 100;
collision.gameObject.GetComponent<Rigidbody>().AddForce(direction);
}
float delta = 0.03f;
// Start is called before the first frame update
void Start()
{
}
float timeCount = 0; // 시간을 카운트하기 위한 변수 선언
// Update is called once per frame
void Update()
{
timeCount += Time.deltaTime; // 지난 update에서 지금 update사이의 시간
if(timeCount > 3) // timecount가 3을 넘긴 경우
{
Instantiate(stone, transform.position, Quaternion.identity); // 현재 shooter의 위치에서 생성
// 새로운 게임 오브젝트 생성
timeCount = 0;
}
float newXPosition = transform.localPosition.x + delta;
transform.localPosition = new Vector3(newXPosition, transform.localPosition.y, transform.localPosition.z);
if (transform.localPosition.x < -3.5)
{
delta = 0.03f;
}
else if (transform.localPosition.x > 3.5)
{
delta = -0.03f;
}
}
}
계속해서 공을 향해 생성되는 stone을 볼 수 있다.