我有一个问题。对于一个简单的游戏,我需要一个简易的,简单的雷达。我到目前为止所做的一切都是你在图片中看到的。只有那条线被旋转。
现在我想让那个蓝点在圆圈的某个地方显得随机,当雷达来到他面前时。
using EduUtils.Events;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class RadarScript : MonoBehaviour
{
public GameObject radarLine;
private Vector3 rotationEuler;
void Start ()
{
}
private void Update()
{
rotationEuler -= Vector3.forward * 50 * Time.deltaTime;
radarLine.transform.rotation = Quaternion.Euler(rotationEuler);
}
}
这个剧本只进行旋转,但是我试图想一想如何在旋转过程中使该点出现在雷达前面。???
答案 0 :(得分:0)
当点进入雷达扇区时,您可以启用渲染器:
public class RadarScript : MonoBehaviour {
public GameObject radarLine;
private Vector3 rotationEuler;
private void Update()
{
rotationEuler -= Vector3.forward * 50 * Time.deltaTime;
radarLine.transform.rotation = Quaternion.Euler(rotationEuler);
var sectorA = radarLine.transform.up;
var sectorB = -radarLine.transform.right;
var allDots = GetComponentsInChildren<RadarDot> ();
foreach (var dot in allDots) {
var a = Vector3.Dot (dot.transform.position, sectorA);
var b = Vector3.Dot (dot.transform.position, sectorB);
dot.GetComponent<Renderer> ().enabled = (a > 0 && b < 0);
}
}
}
这里的想法是使用点积符号来检查点是否位于两个扇形向量之间。示例中的RadarDot只是一个随机位置的精灵:
public class RadarDot : MonoBehaviour {
// Use this for initialization
void Start () {
var randomPos = Random.insideUnitCircle;
transform.position = new Vector3 (randomPos.x, randomPos.y);
GetComponent<Renderer> ().enabled = false;
}
}