Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Ikariwara · Nov 30, 2017 at 09:18 PM · c#monobehaviour

transform.position reads 0 but the actual position is different

Hi,

I'm trying to read the position of a gameobject where a script placed on, but the reading always stays (0.0,0.0,0.0), While the actual position of the object is different

This is the Pattern script that is reading the position

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public struct ShotVariables
 {
     public float Speed;
     public int Direction;
 }
 
 public class PatternPoint
 {
     public List<ShotVariables> Shots = new List<ShotVariables>();
     public int Time;
 
     public PatternPoint(int time)
     {
         Time = time;
     }
 
     public void NewShot(int direction, float speed)
     {
         ShotVariables _shot_variables = new ShotVariables();
         _shot_variables.Direction = direction;
         _shot_variables.Speed = speed;
         Shots.Add(_shot_variables);
  
     }
 }
 
 public class Pattern : MonoBehaviour
 {
     [SerializeField]
     public List<PatternPoint> PatternPoints = new List<PatternPoint>();
 
     public GameObject Shot;
     public Vector3 Position;
 
     private int ShotIndex;
     private int Counter;
 
     public void Wake()
     { 
         ShotIndex = 0;
         Counter = 0;
 
         Debug.Log(this.transform.position);
 
         InvokeRepeating("Shoot", 1.0f, 0.1f);
     }
 
     public PatternPoint NewPatternPoint(int Time)
     {
         PatternPoint _patternPoint = new PatternPoint(Time);
 
         return _patternPoint;
     }
 
     private void Shoot()
     {
         Position = this.transform.position;
         Debug.Log(Position);
         if (ShotIndex < PatternPoints.Count)
         {
             if (PatternPoints[ShotIndex].Time == Counter)
             {
                 for (int i = 0; i < PatternPoints[ShotIndex].Shots.Count; i++)
                 {
                     Debug.Log(Position);
                     GameObject _Shot = Instantiate(Shot, Position, Quaternion.identity) as GameObject;
                     Shot _shot_script = _Shot.GetComponent<Shot>();
                     _shot_script.SetDirection(PatternPoints[ShotIndex].Shots[i].Direction);
                     _shot_script.Speed = PatternPoints[ShotIndex].Shots[i].Speed;
                 }
                 ShotIndex++;
             }
             Counter++;
         }
         else
         {
             CancelInvoke();
         }
     }
 }

The Debug.Log statement on line 69 is reading (0.0,0.0,0.0), which should be (2.0, 1.0, 0.0) which is the actual position in the inspector

This object is instantiated in another script:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class TimingPoint
 {
     public int Time;
     public GameObject Enemy;
     public Enemy enemyScript;
 
     public float StartX;
     public Vector2 StallMarker;
     public float ApproachSpeed;
 
     public TimingPoint(int newTime, GameObject newEnemy, float startX, Vector2 endMarker, float approachSpeed)
     {
         StartX = startX;
         StallMarker = endMarker;
         ApproachSpeed = approachSpeed;
         Time = newTime;
         Enemy = newEnemy;
     }
 }
 
 public class MapPlay : MonoBehaviour
 {
 
     public List<TimingPoint> TimingPoints = new List<TimingPoint>();
 
     public GameObject Enemy;
 
     public int MapLength;
 
     private int enemyIndex;
     private int Counter;
 
     private void Awake ()
     {
         enemyIndex = 0;
         Counter = 0;
 
         TimingPoint TP1 = new TimingPoint(10, Enemy, 2f, new Vector2(2f, 1f), 7f);
         Pattern P1 = TP1.Enemy.GetComponent<Pattern>();
         PatternPoint PP1 = P1.NewPatternPoint(1);
         PP1.NewShot(180, 0.01f);
         PP1.NewShot(170, 0.01f);
         PP1.NewShot(190, 0.01f);
         P1.PatternPoints.Add(PP1);
 
         TimingPoints.Add(TP1);
 
         InvokeRepeating("PlaceEnemies", 3.0f, 0.1f);
     }
 
     private void PlaceEnemies()
     {
             if ((enemyIndex <= TimingPoints.Count - 1))
             {
                 if (TimingPoints[enemyIndex].Time == Counter)
                 {
                     GameObject _enemy = Instantiate(TimingPoints[enemyIndex].Enemy, transform.position, Quaternion.identity) as GameObject;
                     Enemy _enemy_script = _enemy.GetComponent<Enemy>();
                     _enemy_script.StartX = TimingPoints[enemyIndex].StartX;
                     _enemy_script.StallMarker = TimingPoints[enemyIndex].StallMarker;
                     _enemy_script.ApproachSpeed = TimingPoints[enemyIndex].ApproachSpeed;
                     TimingPoints[enemyIndex].Enemy.GetComponent<Pattern>().Wake();
                     enemyIndex++;
                 }
             }
             else
             {
                 CancelInvoke();
             }
 
         Counter++;            
     }
 }


The objects with a Pattern script attached are instantiated on line 61

The Wake() method in the Pattern script is called from the MapPlay class. But strange thing is, that if I try to read the position in an Update() method in the Pattern class, the readings are accurate.

I'm sure I am doing something wrong here which I can't seem to figure out.

I hope someone can see the obvious mistake I made. I know the code is not good, but I'm trying to make this work somehow.

If i'm not clear enough, i'm sorry, I tried my best to explain the issue.

Thank you in advance!

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by Buckslice · Nov 30, 2017 at 11:14 PM

In MapPlay's PlaceEnemies() function you are calling the Wake() of the original prefab not the instantiated instance. You should replace this line

 TimingPoints[enemyIndex].Enemy.GetComponent<Pattern>().Wake();

with

 _enemy.GetComponent<Pattern>().Wake(); 
Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Ikariwara · Dec 01, 2017 at 09:40 AM 0
Share

Thank you! that actually worked

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

421 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

Coroutine without MonoBehaviour 6 Answers

Why does MonoBehaviour not allow message functions to be overridden? 1 Answer

Illuminating a 3D object's edges OnMouseOver (script in c#)? 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges