首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >简单雷达2D

简单雷达2D
EN

Stack Overflow用户
提问于 2017-12-11 22:10:42
回答 1查看 434关注 0票数 0

我有个问题。对于一个简单的游戏,我需要一个简易的雷达。到目前为止,我所做的一切都是你在图片中看到的。只有那条线是旋转的。

现在我想让那个蓝点在圆圈的某处随机出现,当雷达出现时。

代码语言:javascript
运行
复制
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);
   }

}

这个脚本只做了旋转,但我正在努力思考如何在旋转过程中让那个点出现在雷达面前。

EN

回答 1

Stack Overflow用户

发布于 2017-12-12 17:16:20

当点进入雷达扇区时,可以启用渲染器:

代码语言:javascript
运行
复制
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只是一个随机位置的精灵:

代码语言:javascript
运行
复制
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;

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47754762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档