Search Unity

  1. Unity 2018.3 is now released.
    Dismiss Notice
  2. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  3. Our response to Improbable’s blog post (and why you can keep working on your SpatialOS game). Read more here
    Dismiss Notice
  4. Want to provide direct feedback to the Unity team? Join the Unity Advisory Panel.
    Dismiss Notice
  5. Improve your Unity skills with a certified instructor in a private, interactive classroom. Watch the overview now.
    Dismiss Notice

SmoothFollow2D.js to SmoothFollow2D.cs is giving me a no render ship?

Discussion in 'iOS and tvOS' started by beatrage, Dec 20, 2010.

  1. beatrage

    beatrage

    Joined:
    Oct 23, 2010
    Posts:
    74
    I have done this code in C sharp:
    ______________________________________________

    using UnityEngine;
    using System.Collections;

    public class SmoothFollow2 : MonoBehaviour
    {
    public Transform target;
    public float smoothTime = 0.5F;
    public static Vector2 yVelocity;
    private float newPositiony;
    private float newPositionx;
    private Transform thisTransform;


    void Start()
    {
    //thisTransform = transform;
    }

    void Update() {
    newPositiony = Mathf.SmoothDamp(thisTransform.position.y, target.position.y, ref yVelocity.y, smoothTime);
    newPositionx = Mathf.SmoothDamp(thisTransform.position.x, target.position.x, ref yVelocity.x, smoothTime);


    if (newPositiony > thisTransform.position.y)
    {
    HeroAnimate.Heroindex = 2;
    }

    if (newPositiony < thisTransform.position.y)
    {
    HeroAnimate.Heroindex = 1;
    }

    transform.position = new Vector3(newPositionx, newPositiony, 0);
    // I am getting erros here and my ship sometimes has no renderer enabled at the scene start...WHY?

    }
    }
    ______________________________________________


    the original SmoothFollow2D.js in java was:

    ________________________________________________

    var target : Transform;
    var smoothTime = 0.3;
    private var thisTransform : Transform;
    private var velocity : Vector2;

    function Start()
    {
    thisTransform = transform;
    }

    function Update()
    {
    thisTransform.position.x = Mathf.SmoothDamp( thisTransform.position.x,
    target.position.x, velocity.x, smoothTime);
    thisTransform.position.y = Mathf.SmoothDamp( thisTransform.position.y,
    target.position.y, velocity.y, smoothTime);
    }


    ______________________________________________

    I have an invisible sphere that get the touches and my ship just follow it, giving me a moving gravity effect. So...Could someone experienced with changing Java to C sharp give a hand here my developer friends. :-|
     
  2. beatrage

    beatrage

    Joined:
    Oct 23, 2010
    Posts:
    74
    I found this line of error:

    transform.position assign attempt for 'Player' is not valid. Input position is { NaN, 0.000000, 0.000000 }.
    UnityEngine.Transform:set_position(Vector3)
    SmoothFollow2:Update() (at Assets/Scripts/SmoothFollow2.cs:40)

    on the line of code:

    transform.position = new Vector3(newPositionx, newPositiony, 0);

    Any hints here?
     
  3. elveatles

    elveatles

    Joined:
    May 2, 2009
    Posts:
    147
    Eh, why did you comment out the line thisTransform = transform?
     
  4. beatrage

    beatrage

    Joined:
    Oct 23, 2010
    Posts:
    74
    Sorry my code originally was like this:
    ______________________________________________________

    using UnityEngine;
    using System.Collections;

    public class SmoothFollow2 : MonoBehaviour
    {
    public Transform target;
    public float smoothTime = 0.5F;
    public static Vector2 yVelocity;
    private float newPositiony;
    private float newPositionx;
    private Transform thisTransform;



    void Update() {
    newPositiony = Mathf.SmoothDamp(transform.position.y, target.position.y, ref yVelocity.y, smoothTime);
    newPositionx = Mathf.SmoothDamp(transform.position.x, target.position.x, ref yVelocity.x, smoothTime);


    if (newPositiony > transform.position.y)
    {
    HeroAnimate.Heroindex = 2;
    }

    if (newPositiony < transform.position.y)
    {
    HeroAnimate.Heroindex = 1;
    }

    transform.position = new Vector3(newPositionx, newPositiony, 0.0f);


    }
    }

    _______________________________________________________________________

    this is my original code in C sharp from the Java version!
    I was trying to change things so I posted a modified code.
    I am getting the error:

    transform.position assign attempt for 'Player' is not valid. Input position is { NaN, 0.000000, 0.000000 }.
    UnityEngine.Transform:set_position(Vector3)
    SmoothFollow2:Update() (at Assets/Scripts/SmoothFollow2.cs:40)

    on the line of code:

    transform.position = new Vector3(newPositionx, newPositiony, 0);

    And when it happens on my iphone my ship renderer is disabled but it´s stil there...this is really getting into my nerves because I can´t see the error in here.I know it´s telling me that this -> { NaN, 0.000000, 0.000000 } is a wrong coordinate, but why am I getting an error like this?
    I read a post telling that this is an error not fixed by the engine? Is this true? I´ll never be able to launch a game that the renderer keeps messing around all the time. Any hints here?