Code: Getting the cube to move with left, right, top, down by ADWS and by keyboard arrows + Jump with space bar
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cubeBehavior : MonoBehaviour
{
private Light myLight;
private new Rigidbody rigidbody;
// jump variables
public float jumpHeight;
// rotate variable
public Vector3 rotateAmount;
// Start is called before the first frame update
void Start()
{
print( message: "Hi from start method");
myLight = GetComponent<Light>();
rigidbody = GetComponent<Rigidbody>();
}
// declare the light variable
// grab the light variable
// Update is called once per frame
void Update()
{
// print( message: "Hi from update method");
// script to turn light on / off the light variable
if (Input.GetMouseButtonDown (0)) {
print ("The Left mouse button was pressed");
myLight.enabled = !myLight.enabled;
// rigidbody.MovePosition(transform.position + transform.forward);
rigidbody.transform.Rotate(new Vector3(0, -10, 0));
// rotate the cube wieh clicks rigidbody.transform.Rotate(new Vector3(3, 4, 1));
}
if (Input.GetMouseButtonDown (1)) {
print ("The Right mouse button was pressed");
myLight.enabled = !myLight.enabled;
// rigidbody.MovePosition(transform.position + transform.forward);
rigidbody.transform.Rotate(new Vector3(0, 10, 0));
// rotate the cube wieh clicks rigidbody.transform.Rotate(new Vector3(3, 4, 1));
}
// adding keyboard navigation
if (Input.GetKey (KeyCode.W)) {
transform.Translate (0.0f, 0f, 0.01f);
}
if (Input.GetKey (KeyCode.S)) {
transform.Translate (0.0f, 0f, -0.01f);
}
if (Input.GetKey (KeyCode.D)) {
transform.Translate (0.01f, 0f, 0f);
}
if (Input.GetKey (KeyCode.A)) {
transform.Translate (-0.01f, 0f, 0f);
}
// adding arrows navigation
if (Input.GetKey("up")) {
transform.Translate (0.0f, 0f, 0.01f);
}
if (Input.GetKey("down")) {
transform.Translate (0.0f, 0f, -0.01f);
}
if (Input.GetKey("right")) {
transform.Translate (0.01f, 0f, 0f);
}
if (Input.GetKey("left")) {
transform.Translate (-0.01f, 0f, 0f);
}
if (Input.GetKey("space")) {
print ("the space button was pressed");
rigidbody.AddForce(Vector3.up * jumpHeight);
}
}
}
Code: Getting the Main camera to stalk the cube
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cameraController : MonoBehaviour
{ public float turnSpeed = 4.0f;
//create a myCube variable
public Transform myCube;
// create offset camera
public Vector3 cameraOffset;
// Start is called before the first frame update
void Start()
{
cameraOffset = new Vector3(myCube.position.x, myCube.position.y + 4.0f, myCube.position.z + 3.0f);
}
// Update is called once per frame
void Update()
{
}
void LateUpdate()
{
cameraOffset = Quaternion.AngleAxis (Input.GetAxis("Mouse X") * turnSpeed, Vector3.up) * cameraOffset;
transform.position = myCube.position + cameraOffset;
transform.LookAt(myCube.position);
}
}
Learnings
I think that Unity and its integration with Visual Studio Code is a good smart relationship. What’s not as smooth is the constant drag and drop and assignment that needs to happen in Unity after the code is in VSC. How come Unity doesn’t allow for code editing in-app? Seems like a mis-opportunity to me.
What’s next:
Switching that cube into a farmer, because yes - I’m biased to the pre-conception that a farmer should be on a farm vs. a cube
Create a reward interactive whereas upon coming into contact, the gold would turn into dust with some magical animation that celebrates the user’s winning moment
Change the keyboard movement to reset based on current cube direction and not original orientation