private WorldSpaceCanvas worldSpaceCanvas; // Attach new text to this world space canvas // Use this for initialization void Start() { cannonballRB = GetComponent <Rigidbody2D>(); playerShootScript = GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerShoot>(); cannonDirection = playerShootScript.GetDirection(); speed = playerShootScript.cannonSpeed; cannonballRB.velocity = cannonDirection * speed * Time.deltaTime; worldSpaceCanvas = WorldSpaceCanvas.instance; // Attach new text to world space canvas Destroy(gameObject, destroyTime); }
public static WorldSpaceCanvas Get() { if (!s_Instance) { s_Instance = GameObject.FindObjectOfType <WorldSpaceCanvas>(); s_Instance.ReInit(); } return(s_Instance); }
void Awake() { if (instance == null || instance == this) { instance = this; } else { Debug.LogWarning("Warning: Two WorldSpaceCanvas were created"); } }
/////////////////////////////////////////////////////////////////////////// public void UpdateHighlightedObject() { GameObject newHighlightObject = null; Vector2 selfPos = transform.position.xz(); Vector2 lookDir = transform.forward.xz(); lookDir.Normalize(); Trap nearestTrap = TrapManager.Get().GetNearestTrap(true, EquippedTool, selfPos, true, true, lookDir); if (nearestTrap) { newHighlightObject = nearestTrap.gameObject; } else { Tool nearestTool = ToolTrolley.Get().GetNearestTool(selfPos, true, lookDir); if (nearestTool) { newHighlightObject = nearestTool.gameObject; } } if (newHighlightObject != HighlightedObject) { if (HighlightedObjectIcon) { GameObject.Destroy(HighlightedObjectIcon); } if (newHighlightObject) { // highlight new HighlightedObjectIcon = WorldSpaceCanvas.Get().CreateInteractIcon(GetPlayerColor(Slot)); } HighlightedObject = newHighlightObject; } if (HighlightedObject && HighlightedObjectIcon) { if (!EquippedTool || HighlightedObject != EquippedTool.gameObject) { float offset = HighlightedObject.gameObject.GetComponent <Tool>() ? 0.8f : 2.0f; HighlightedObjectIcon.transform.position = HighlightedObject.transform.position + Vector3.up * offset; Vector3 offsetTowardsCamera = (Camera.main.transform.position - HighlightedObject.transform.position); offsetTowardsCamera.Normalize(); HighlightedObjectIcon.transform.position += offsetTowardsCamera * 2.0f; } } }
protected override void Awake() { base.Awake(); ScreenSpacePerspectiveCanvas = transform.InstantiatePrefabAsChild("Prefabs/ui/ScreenSpacePerspectiveCanvas") as RectTransform; ScreenSpaceOrthographicCanvas = transform.InstantiatePrefabAsChild("Prefabs/ui/ScreenSpaceOrthographicCanvas") as RectTransform; WorldSpaceCanvas = transform.InstantiatePrefabAsChild("Prefabs/ui/WorldSpaceCanvas") as RectTransform; CharacterTargetIndicator = WorldSpaceCanvas.InstantiatePrefabAsChild("Prefabs/ui/CharacterTargetIndicator") as RectTransform; }
/////////////////////////////////////////////////////////////////////////// void SetStuckParticlesEnabled(bool enable) { if (stuckPS) { if (enable) { stuckPS.Play(); } else { stuckPS.Stop(); } } else { WorldSpaceCanvas.Get().AddText("I'm Angry!", transform.position); } }
// Start is called before the first frame update void Start() { if (WorldSpace) { CameraSpaceCanvas.SetActive(false); WorldSpaceCanvas.SetActive(true); TrialTrackText.gameObject.SetActive(TrackTrials); TrialTrackText.text = "Trials Remaining: " + (ExperimentController.Instance().Session.Trials.Count() - ExperimentController.Instance().Session.currentTrialNum + 1); ManualScoreText = ExperimentController.Instance().Score.ToString(); } else { CameraSpaceCanvas.SetActive(true); WorldSpaceCanvas.SetActive(false); ManualScoreText = ExperimentController.Instance().Score.ToString(); } }
/////////////////////////////////////////////////////////////////////////// void TryInteraction() { bool doInteract = Input.GetButtonDown(GetInputPrefix() + "Interact"); if (doInteract) { CharAnim.SetTrigger("Work"); Vector2 selfPos = transform.position.xz(); Vector2 selfLookDir = transform.forward.xz(); selfLookDir.Normalize(); // 1) Traps if (EquippedTool && EquippedTool._ToolType != ToolType.Megaphone) { Trap nearestTrap = TrapManager.Get().GetNearestTrap(true, EquippedTool, selfPos, true, true, selfLookDir); if (nearestTrap) { if (EquippedTool) { AudioManager.Get().PlayRandomOneShot(gameObject, EquippedTool.RepairSound, EquippedTool.RepairSoundVolume); } nearestTrap.Interact(); return; } if (TrapManager.Get().GetNearestTrap(false, EquippedTool, selfPos, true, true, selfLookDir)) { PlayFailSound(); WorldSpaceCanvas.Get().AddText("Wrong Tool", transform.position); return; } } // 2) Trolley Tool nearestTool = ToolTrolley.Get().GetNearestTool(selfPos, true, selfLookDir); if (nearestTool) { ToolTrolley.Get().SwitchTool(ref EquippedTool, nearestTool); if (EquippedTool._ToolType == ToolType.Drill) { ToolVisuals[0].gameObject.SetActive(true); ToolVisuals[1].gameObject.SetActive(false); ToolVisuals[2].gameObject.SetActive(false); ToolVisuals[3].gameObject.SetActive(false); } else if (EquippedTool._ToolType == ToolType.Hammer) { ToolVisuals[0].gameObject.SetActive(false); ToolVisuals[1].gameObject.SetActive(true); ToolVisuals[2].gameObject.SetActive(false); ToolVisuals[3].gameObject.SetActive(false); } else if (EquippedTool._ToolType == ToolType.Megaphone) { ToolVisuals[0].gameObject.SetActive(false); ToolVisuals[1].gameObject.SetActive(false); ToolVisuals[2].gameObject.SetActive(true); ToolVisuals[3].gameObject.SetActive(false); } else if (EquippedTool._ToolType == ToolType.Mop) { ToolVisuals[0].gameObject.SetActive(false); ToolVisuals[1].gameObject.SetActive(false); ToolVisuals[2].gameObject.SetActive(false); ToolVisuals[3].gameObject.SetActive(true); } return; } // 3) Megaphone if (EquippedTool && EquippedTool._ToolType == ToolType.Megaphone) { if (Time.time - m_LastMegaphoneUsage > MegaphoneCooldown) { AudioManager.Get().PlayRandomOneShot(EquippedTool.gameObject, EquippedTool.RepairSound, EquippedTool.RepairSoundVolume); m_LastMegaphoneUsage = Time.time; Vector2 ownPos = transform.position.xz(); Vector2 ownForward = transform.forward.xz(); Vector2 MegaphoneImpactCenter = ownPos + ownForward * MegaphoneImpactDistance; List <Walker> walkers = WalkerManager.Get().GetAllWalkers(Vector2.zero, null); foreach (Walker walker in walkers) { Vector2 walkerPos = walker.transform.position.xz(); float dist = Vector2.Distance(walkerPos, MegaphoneImpactCenter); float impactAmount = 1.0f - Mathf.InverseLerp(MegaphoneInnerRadius, MegaphoneOuterRadius, dist); impactAmount = Mathf.Clamp01(impactAmount); if (impactAmount <= 0.0f) { continue; } float debugHeight = transform.position.y + 0.1f; Debug.DrawLine(MegaphoneImpactCenter.To3D(debugHeight), walkerPos.To3D(debugHeight)); Vector2 pushDir = (walkerPos - MegaphoneImpactCenter).normalized; /* * Vector2 orthogonalVector = new Vector2(ownForward.y, -ownForward.x); * * if (Vector2.Dot(orthogonalVector, pushDir) < 0.0f) * { * orthogonalVector *= -1.0f; * } * * pushDir = Vector2.Lerp(pushDir, orthogonalVector, MegaphoneOrthogonalPush).normalized; */ Debug.DrawLine(walkerPos.To3D(debugHeight), (walkerPos + pushDir * 3.0f).To3D(debugHeight), Color.red); walker.MegaphoneForceAmountNorm = impactAmount; walker.MegaphoneForceDirection = pushDir.normalized; walker.Reorient(); } } return; } // 4) Error PlayFailSound(); } }
void SpawnCanvas() { buttonPromptCanvas = Instantiate(buttonPromptCanvasPrefab, transform, false); buttonPromptCanvas.transform.localPosition = new Vector3(0, 2, 0); buttonPromptCanvas.SetText(inputToText[input]); }
private WorldSpaceCanvas worldSpaceCanvas; // Attach new text to this world space canvas void Start() { pickupSound = GetComponent <AudioSource> (); worldSpaceCanvas = WorldSpaceCanvas.instance; // Attach new text to world space canvas }