扇形区域检测和子弹生成代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sector : MonoBehaviour {
public GameObject bullet;
private float distance = 30f;
float timer = 0;
float useTime = 0;
bool isBulet;
private void Start()
{
timer = 100;
}
void Update()
{
CheckRange();
if (timer > 0 && useTime < Time.time)
{
useTime = Time.time + 1;
timer -= 2;
isBulet = true;
}
else
{
isBulet = false;
}
}
public void CheckRange()
{
Quaternion r = transform.rotation;
Vector3 f0 = (transform.position + (r * Vector3.forward) * distance);
Quaternion r0 = Quaternion.Euler(transform.rotation.eulerAngles.x , transform.rotation.eulerAngles.y - 30f , transform.rotation.eulerAngles.z);
Quaternion r1 = Quaternion.Euler(transform.rotation.eulerAngles.x , transform.rotation.eulerAngles.y + 30f , transform.rotation.eulerAngles.z);
Vector3 f1 = (transform.position + (r0 * Vector3.forward) * distance);
Vector3 f2 = (transform.position + (r1 * Vector3.forward) * distance);
if (isBulet)
{
GameObject go = Instantiate(bullet);
go.transform.localPosition = transform.localPosition;
go.GetComponent().GetY(1);
GameObject go1 = Instantiate(bullet);
go1.transform.localPosition = transform.localPosition;
go1.GetComponent().GetY(5);
GameObject go2 = Instantiate(bullet);
go2.transform.localPosition = transform.localPosition;
go2.GetComponent().GetY(-5);
}
}
}
子弹身上绑定代码
using UnityEngine;
public class Bullet : MonoBehaviour
{
int y = 0;
public void GetY(int y)
{
this.y = y;
}
void Update()
{
if (y != 0)
{
transform.Translate(Time.deltaTime * 10 , 0 , Time.deltaTime * -y);
transform.position=new Vector3(transform.position.x , 0.5f ,transform.position.z);
}
}
}
最后编辑:2018-11-13作者:shengruqing
这个作者貌似有点懒,什么都没有留下。
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!