JudgeTrigger
外部区域判定区
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
namespace Ichni.RhythmGame.ThemeBundles.Basic
|
||||
{
|
||||
public class JudgeTrigger : EnvironmentObject, IHaveNoteJudgeTriggerSubmodule
|
||||
{
|
||||
public SpriteRenderer triggerSprite;
|
||||
public Collider triggerCollider;
|
||||
public NoteJudgeTriggerSubmodule noteJudgeTriggerSubmodule { get; set; }
|
||||
|
||||
public static JudgeTrigger GenerateElement(string elementName, Guid id, List<string> tags,
|
||||
bool isFirstGenerated, GameElement parentElement, string themeBundleName, string objectName, bool isStatic)
|
||||
{
|
||||
JudgeTrigger judgeTrigger = EnvironmentObject.GenerateElement(elementName, id, tags,
|
||||
isFirstGenerated, themeBundleName, objectName, parentElement, isStatic).GetComponent<JudgeTrigger>();
|
||||
return judgeTrigger;
|
||||
}
|
||||
|
||||
public override void SetDefaultSubmodules()
|
||||
{
|
||||
base.SetDefaultSubmodules();
|
||||
noteJudgeTriggerSubmodule = new NoteJudgeTriggerSubmodule(this);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (EditorManager.instance.cameraManager.isSceneCameraActive)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//If mouse is hovering over the object, sprite becomes red, otherwise it becomes white
|
||||
triggerSprite.color = IsMouseOver() ? Color.red : Color.white;
|
||||
}
|
||||
|
||||
private bool IsMouseOver()
|
||||
{
|
||||
//Raycast to check if mouse is over the object
|
||||
Ray ray = EditorManager.instance.cameraManager.gameCamera.camera.ScreenPointToRay(Mouse.current.position.ReadValue());
|
||||
if (Physics.Raycast(ray, out RaycastHit hit))
|
||||
{
|
||||
if (hit.collider == triggerCollider)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
{
|
||||
public class JudgeTrigger_BM : EnvironmentObject_BM
|
||||
{
|
||||
public JudgeTrigger_BM()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public JudgeTrigger_BM(string elementName, Guid elementGuid, List<string> tags,
|
||||
GameElement_BM parentElement, string themeBundleName, string objectName, bool isStatic) :
|
||||
base(elementName, elementGuid, tags, parentElement, themeBundleName, objectName, isStatic)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void ExecuteBM()
|
||||
{
|
||||
matchedElement = JudgeTrigger.GenerateElement(elementName, elementGuid, tags, false,
|
||||
GetElement(attachedElementGuid), themeBundleName, objectName, isStatic);
|
||||
}
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return JudgeTrigger.GenerateElement(elementName, Guid.NewGuid(), tags, false,
|
||||
parent, themeBundleName, objectName, isStatic);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9a7a990728bad4e9ba201e72267e7eca
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user