add package files

This commit is contained in:
VR164000
2023-06-15 09:52:08 +08:00
parent 06d41412be
commit a0b3b91879
382 changed files with 44971 additions and 0 deletions

View File

@@ -0,0 +1,103 @@
using System;
using UnityEngine.InputSystem;
using UnityEngine.UI;
using UnityEngine;
public class Controller : MonoBehaviour
{
[SerializeField]
private InputActionReference m_ActionReferenceTrigger;
public InputActionReference actionReferenceTrigger { get => m_ActionReferenceTrigger ; set => m_ActionReferenceTrigger=value; }
[SerializeField]
private InputActionReference m_ActionReferenceGrip;
public InputActionReference actionReferenceGrip { get => m_ActionReferenceGrip ; set => m_ActionReferenceGrip=value; }
public GameObject MeshSubSystem;
public Transform spawnPoint;
public GameObject sphere;
public float shootVelocity = 5f;
Type lastActiveType_Trigger = null;
Type lastActiveType_Grip = null;
bool isSpawned = false;
bool isSwitchedMeshPrefab = false;
// Update is called once per frame
void Update()
{
if ( actionReferenceTrigger != null && actionReferenceTrigger.action != null
&& actionReferenceTrigger.action.enabled && actionReferenceTrigger.action.controls.Count > 0
&& actionReferenceGrip != null && actionReferenceGrip.action != null
&& actionReferenceGrip.action.enabled && actionReferenceGrip.action.controls.Count > 0)
{
// Grip
Type typeToUse_Grip = null;
if(actionReferenceGrip.action.activeControl != null)
{
typeToUse_Grip = actionReferenceGrip.action.activeControl.valueType;
}
else
{
typeToUse_Grip = lastActiveType_Grip;
}
if(typeToUse_Grip == typeof(float))
{
lastActiveType_Grip = typeof(float);
float value = actionReferenceGrip.action.ReadValue<float>();
if(value > 0.5)
{
if(!isSwitchedMeshPrefab)
{
isSwitchedMeshPrefab = true;
Debug.Log("Press Button B.");
if(MeshSubSystem != null)
{
MeshSubSystem.GetComponent<UnityEngine.XR.OpenXR.Samples.MeshingFeature.MeshingBehaviour>().SwitchMeshPrefab();
}
}
}
else
{
isSwitchedMeshPrefab = false;
}
}
// Trigger
Type typeToUse_Trigger = null;
if(actionReferenceTrigger.action.activeControl != null)
{
typeToUse_Trigger = actionReferenceTrigger.action.activeControl.valueType;
}
else
{
typeToUse_Trigger = lastActiveType_Trigger;
}
if(typeToUse_Trigger == typeof(float))
{
lastActiveType_Trigger = typeof(float);
float value = actionReferenceTrigger.action.ReadValue<float>();
if(value > 0.5)
{
if(!isSpawned)
{
isSpawned = true;
SpawnTarget();
}
}
else
{
isSpawned = false;
}
}
}
}
private void SpawnTarget()
{
GameObject ball = Instantiate(sphere, spawnPoint);
Rigidbody rb = ball.GetComponent<Rigidbody>();
rb.velocity = ball.transform.parent.forward * shootVelocity;
rb.isKinematic = false;
ball.transform.parent = null;
}
}