Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Digital Manufacturing (2025)
- // Script 1: RobotController
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class RobotController : MonoBehaviour
- {
- [Serializable]
- public class JointData
- {
- public Transform transform;
- public float velocity = 30f;
- public float currentAngle = 0f;
- public float minAngle = -90f;
- public float maxAngle = 90f;
- }
- public List<JointData> joints = new List<JointData>();
- public int selectedJointIndex = 0;
- private bool shouldMoveLeft = false;
- private bool shouldMoveRight = false;
- public JointData SelectedJoint => joints[selectedJointIndex];
- // Update is called once per frame
- void Update()
- {
- float angleDelta = 0f;
- angleDelta = ApplyKeyboardInputs(angleDelta);
- angleDelta = ApplyUiInputs(angleDelta);
- angleDelta = ApplyJointLimits(angleDelta);
- SelectedJoint.transform.Rotate(0f, 0f, angleDelta);
- SelectedJoint.currentAngle += angleDelta;
- }
- private float ApplyKeyboardInputs(float angleDelta)
- {
- bool isLeftPressed = Input.GetKey(KeyCode.LeftArrow);
- if (isLeftPressed)
- {
- angleDelta = SelectedJoint.velocity * Time.deltaTime;
- }
- bool isRightPressed = Input.GetKey(KeyCode.RightArrow);
- if (isRightPressed)
- {
- angleDelta = -SelectedJoint.velocity * Time.deltaTime;
- }
- bool isSpacePressed = Input.GetKeyDown(KeyCode.Space);
- if (isSpacePressed)
- {
- SelectNextJoint();
- }
- return angleDelta;
- }
- private float ApplyUiInputs(float angleDelta)
- {
- if (shouldMoveLeft)
- {
- angleDelta = SelectedJoint.velocity * Time.deltaTime;
- }
- if (shouldMoveRight)
- {
- angleDelta = -SelectedJoint.velocity * Time.deltaTime;
- }
- return angleDelta;
- }
- private float ApplyJointLimits(float angleDelta)
- {
- if (SelectedJoint.currentAngle + angleDelta < SelectedJoint.minAngle)
- {
- angleDelta = SelectedJoint.minAngle - SelectedJoint.currentAngle;
- }
- if (SelectedJoint.currentAngle + angleDelta > SelectedJoint.maxAngle)
- {
- angleDelta = SelectedJoint.maxAngle - SelectedJoint.currentAngle;
- }
- return angleDelta;
- }
- public void SelectNextJoint()
- {
- selectedJointIndex += 1;
- if (selectedJointIndex >= joints.Count)
- {
- selectedJointIndex = 0;
- }
- }
- public void StartMovingLeft()
- {
- shouldMoveLeft = true;
- shouldMoveRight = false;
- }
- public void StartMovingRight()
- {
- shouldMoveLeft = false;
- shouldMoveRight = true;
- }
- public void Stop()
- {
- shouldMoveLeft = false;
- shouldMoveRight = false;
- }
- }
- // XR Packages
- // VR:
- // Tilia Spatial Simulator: https://github.com/ExtendRealityLtd/Tilia.CameraRigs.SpatialSimulator.Unity
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement