private Vector3 pos ;
private Vector3 pos1 ;
private Vector3 pos2 ;
public float Distance;
private float Rdistance;
public float speed = 1.0f;
public bool upDown ;
public bool rotate ;
public bool Antirotate ;
public bool AntiMov ;
private bool rot1 ;
private bool rot2 ;
void Awake(){
pos = new Vector3 (transform.position.x, transform.position.y, transform.position.z);
gameObject.transform.position = new Vector3 (pos.x, pos.y, pos.z);
}
void Start(){
if (upDown) {
pos1 = new Vector3 (transform.position.x , transform.position.y + Distance, transform.position.z);
pos2 = new Vector3 (transform.position.x, transform.position.y - Distance, transform.position.z);
} else {
pos1 = new Vector3 (transform.position.x + Distance, transform.position.y, transform.position.z);
pos2 = new Vector3 (transform.position.x - Distance, transform.position.y, transform.position.z);
}
Rdistance = Distance - 0.01f;
//DontDestroyOnLoad (gameObject);
if (AntiMov) {
moveR = true;
} else {
moveL = true;
}
}
bool moveR,moveL;
void LateUpdate() {
// moving script
if (upDown) {
if (pos.y < (pos1.y) && moveR == true)
{
transform.position = new Vector3(pos.x,Mathf.Lerp(transform.position.y,transform.position.y+Rdistance,Time.fixedDeltaTime*speed), pos.z);
if(pos1.y<transform.position.y){
moveR = false;
moveL = true;
}
}
else if (pos.y > (pos2.y) && moveL == true)
{
transform.position = new Vector3(pos.x,Mathf.Lerp(transform.position.y,transform.position.y-Rdistance,Time.fixedDeltaTime*speed), pos.z);
if(pos2.y>transform.position.y){
moveR = true;
moveL = false;
}
}
}
else {
if (pos.x < (pos1.x) && moveR == true)
{
transform.position = new Vector3(Mathf.Lerp(transform.position.x,transform.position.x+Rdistance,Time.fixedDeltaTime*speed) , pos.y, pos.z);
if(pos1.x<transform.position.x){
moveR = false;
moveL = true;
}
}
else if (pos.x > (pos2.x) && moveL == true)
{
transform.position = new Vector3(Mathf.Lerp(transform.position.x,transform.position.x-Rdistance,Time.fixedDeltaTime*speed) , pos.y, pos.z);
if(pos2.x>transform.position.x){
moveR = true;
moveL = false;
}
}
}
// roation script
if (rotate && !Antirotate) {
if (!upDown){
if (transform.position.x < (pos.x-Rdistance) && rot2==false) {
rot1 = false;
rot2 = true;
transform.localScale = new Vector3 (-transform.localScale.x, transform.localScale.y, transform.localScale.z);
}
if (transform.position.x > (pos.x+Rdistance) && rot1==false) {
rot1 = true;
rot2 = false;
transform.localScale = new Vector3 (-transform.localScale.x, transform.localScale.y, transform.localScale.z);
}
}
}else if (!rotate && Antirotate) {
if (upDown){
if (transform.position.y > (pos.y+Rdistance) && rot1==false) {
rot1 = true;
rot2 = false;
transform.localScale = new Vector3 (transform.localScale.x, -transform.localScale.y, transform.localScale.z);
}
else if (transform.position.y < (pos.y-Rdistance) && rot2==false) {
rot1 = false;
rot2 = true;
transform.localScale = new Vector3 (transform.localScale.x, -transform.localScale.y, transform.localScale.z);
}
}
}
}
//move towards a target at a set speed.
private void MoveTowardsTarget() {
//the speed, in units per second, we want to move towards the target
float speed = 1;
//move towards the center of the world (or where ever you like)
Vector3 targetPosition = pos2;
Vector3 currentPosition = this.transform.position;
//first, check to see if we're close enough to the target
if(Vector3.Distance(currentPosition, targetPosition) > .1f) {
Vector3 directionOfTravel = targetPosition - currentPosition;
//now normalize the direction, since we only want the direction information
directionOfTravel.Normalize();
//scale the movement on each axis by the directionOfTravel vector components
this.transform.Translate(
(directionOfTravel.x * speed * Time.deltaTime),
(directionOfTravel.y * speed * Time.deltaTime),
(directionOfTravel.z * speed * Time.deltaTime),
Space.World);
}
}
private Vector3 pos1 ;
private Vector3 pos2 ;
public float Distance;
private float Rdistance;
public float speed = 1.0f;
public bool upDown ;
public bool rotate ;
public bool Antirotate ;
public bool AntiMov ;
private bool rot1 ;
private bool rot2 ;
void Awake(){
pos = new Vector3 (transform.position.x, transform.position.y, transform.position.z);
gameObject.transform.position = new Vector3 (pos.x, pos.y, pos.z);
}
void Start(){
if (upDown) {
pos1 = new Vector3 (transform.position.x , transform.position.y + Distance, transform.position.z);
pos2 = new Vector3 (transform.position.x, transform.position.y - Distance, transform.position.z);
} else {
pos1 = new Vector3 (transform.position.x + Distance, transform.position.y, transform.position.z);
pos2 = new Vector3 (transform.position.x - Distance, transform.position.y, transform.position.z);
}
Rdistance = Distance - 0.01f;
//DontDestroyOnLoad (gameObject);
if (AntiMov) {
moveR = true;
} else {
moveL = true;
}
}
bool moveR,moveL;
void LateUpdate() {
// moving script
if (upDown) {
if (pos.y < (pos1.y) && moveR == true)
{
transform.position = new Vector3(pos.x,Mathf.Lerp(transform.position.y,transform.position.y+Rdistance,Time.fixedDeltaTime*speed), pos.z);
if(pos1.y<transform.position.y){
moveR = false;
moveL = true;
}
}
else if (pos.y > (pos2.y) && moveL == true)
{
transform.position = new Vector3(pos.x,Mathf.Lerp(transform.position.y,transform.position.y-Rdistance,Time.fixedDeltaTime*speed), pos.z);
if(pos2.y>transform.position.y){
moveR = true;
moveL = false;
}
}
}
else {
if (pos.x < (pos1.x) && moveR == true)
{
transform.position = new Vector3(Mathf.Lerp(transform.position.x,transform.position.x+Rdistance,Time.fixedDeltaTime*speed) , pos.y, pos.z);
if(pos1.x<transform.position.x){
moveR = false;
moveL = true;
}
}
else if (pos.x > (pos2.x) && moveL == true)
{
transform.position = new Vector3(Mathf.Lerp(transform.position.x,transform.position.x-Rdistance,Time.fixedDeltaTime*speed) , pos.y, pos.z);
if(pos2.x>transform.position.x){
moveR = true;
moveL = false;
}
}
}
// roation script
if (rotate && !Antirotate) {
if (!upDown){
if (transform.position.x < (pos.x-Rdistance) && rot2==false) {
rot1 = false;
rot2 = true;
transform.localScale = new Vector3 (-transform.localScale.x, transform.localScale.y, transform.localScale.z);
}
if (transform.position.x > (pos.x+Rdistance) && rot1==false) {
rot1 = true;
rot2 = false;
transform.localScale = new Vector3 (-transform.localScale.x, transform.localScale.y, transform.localScale.z);
}
}
}else if (!rotate && Antirotate) {
if (upDown){
if (transform.position.y > (pos.y+Rdistance) && rot1==false) {
rot1 = true;
rot2 = false;
transform.localScale = new Vector3 (transform.localScale.x, -transform.localScale.y, transform.localScale.z);
}
else if (transform.position.y < (pos.y-Rdistance) && rot2==false) {
rot1 = false;
rot2 = true;
transform.localScale = new Vector3 (transform.localScale.x, -transform.localScale.y, transform.localScale.z);
}
}
}
}
//move towards a target at a set speed.
private void MoveTowardsTarget() {
//the speed, in units per second, we want to move towards the target
float speed = 1;
//move towards the center of the world (or where ever you like)
Vector3 targetPosition = pos2;
Vector3 currentPosition = this.transform.position;
//first, check to see if we're close enough to the target
if(Vector3.Distance(currentPosition, targetPosition) > .1f) {
Vector3 directionOfTravel = targetPosition - currentPosition;
//now normalize the direction, since we only want the direction information
directionOfTravel.Normalize();
//scale the movement on each axis by the directionOfTravel vector components
this.transform.Translate(
(directionOfTravel.x * speed * Time.deltaTime),
(directionOfTravel.y * speed * Time.deltaTime),
(directionOfTravel.z * speed * Time.deltaTime),
Space.World);
}
}
No comments:
Post a Comment