Asset Dump
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
//
|
||||
//NOTES:
|
||||
//This script is used for DEMONSTRATION porpuses of the Projectiles. I recommend everyone to create their own code for their own projects.
|
||||
//This is just a basic example.
|
||||
//
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class RotateToMouseScript : MonoBehaviour {
|
||||
|
||||
public float maximumLenght;
|
||||
|
||||
private bool use2D;
|
||||
private Ray rayMouse;
|
||||
private Vector3 pos;
|
||||
private Vector3 direction;
|
||||
private Quaternion rotation;
|
||||
private Camera cam;
|
||||
private WaitForSeconds updateTime = new WaitForSeconds (0.01f);
|
||||
|
||||
|
||||
public void StartUpdateRay (){
|
||||
StartCoroutine (UpdateRay());
|
||||
}
|
||||
|
||||
IEnumerator UpdateRay (){
|
||||
if (cam != null) {
|
||||
if (use2D) {
|
||||
Vector2 direction = Camera.main.ScreenToWorldPoint (Input.mousePosition) - transform.position;
|
||||
float angle = Mathf.Atan2 (direction.y, direction.x) * Mathf.Rad2Deg;
|
||||
if (angle > 180) angle -= 360;
|
||||
rotation.eulerAngles = new Vector3 (-angle, 90, 0); // use different values to lock on different axis
|
||||
transform.rotation = rotation;
|
||||
} else {
|
||||
RaycastHit hit;
|
||||
var mousePos = Input.mousePosition;
|
||||
rayMouse = cam.ScreenPointToRay (mousePos);
|
||||
if (Physics.Raycast (rayMouse.origin, rayMouse.direction, out hit, maximumLenght)) {
|
||||
RotateToMouse (gameObject, hit.point);
|
||||
} else {
|
||||
var pos = rayMouse.GetPoint (maximumLenght);
|
||||
RotateToMouse (gameObject, pos);
|
||||
}
|
||||
}
|
||||
yield return updateTime;
|
||||
StartCoroutine (UpdateRay ());
|
||||
} else
|
||||
Debug.Log ("Camera not set");
|
||||
}
|
||||
|
||||
public void RotateToMouse (GameObject obj, Vector3 destination ) {
|
||||
direction = destination - obj.transform.position;
|
||||
rotation = Quaternion.LookRotation (direction);
|
||||
obj.transform.localRotation = Quaternion.Lerp (obj.transform.rotation, rotation, 1);
|
||||
}
|
||||
|
||||
public void Set2D (bool state){
|
||||
use2D = state;
|
||||
}
|
||||
|
||||
public void SetCamera (Camera camera){
|
||||
cam = camera;
|
||||
}
|
||||
|
||||
public Vector3 GetDirection () {
|
||||
return direction;
|
||||
}
|
||||
|
||||
public Quaternion GetRotation () {
|
||||
return rotation;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user