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 unity_pIzRQd_yx2jU_w · Oct 31, 2018 at 05:01 AM · scripting beginnerfunctionchildinheritance

Inherit functions that work properly

Sorry for my bad english.

I've created a parent class that I expect to have all functions related to test if the gameObject is grounded, in water, on air, etc... given that this functions will be used by the player as well as other gameObjects. However, the child class seems not to beig inherit properly the functions.

The parent script it's as follows:

 public class CharacterPhysic : MonoBehaviour {
     [SerializeField] protected Transform groundPoints;
     float grounRadius;
     private void Start ()
     {
         whatIsGround = LayerMask.GetMask("Ground");
         groundRadius = 0.01f;
     }
     protected bool IsGrounded()
     {
         Collider2D[] colliders = Physics2D.OverlapCircleAll(groundPoints.position, groundRadius, whatIsGround);
         if (colliders.Length > 0)
         {
             return true;
         }
         else return false;
     }
     private void FixedUpdate()
     {
         Debug.Log(IsGrounded());
     }
 }

And the children script is just

 public class ErrantMove : CharacterPhysic {
     private void FixedUpdate()
     {
         Debug.Log(IsGrounded());
     }
 }

When added the first script as component to a gameobject (after define the grounPoint) the Debug.Log(IsGrounded()); returns TRUE

However, when added the second script as component to the same gameobject (after define the grounPoint and remove the first script) the Debug.Log(IsGrounded()); returns FALSE even in the same circumstances.

I'm expecting to be able to add movement functions into the second script but this depend on the ability to test if it is grounded.

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

Answer by A_Lego · Oct 31, 2018 at 05:18 AM

"whatIsGround = LayerMask.GetMask("Ground");" is being run in a PRIVATE start function, which can only be accessed by the base/main class and not children/derived classes. So your basically just not setting the layermask in the Physics.OverlapCircleAll function! Also: IsGrounded can't really be used because the values you requesting from it, like "grounRadius", are private variables to the parent "CharacterPhysic" class.

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 A_Lego · Oct 31, 2018 at 05:27 AM 0
Share

I may be mistaken on how inheritance works, but I believe the scope of your variables is the issue nonetheless

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

103 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

Related Questions

C# Inheritance Problems 1 Answer

Inheritance - Need Both Scripts Attached? 1 Answer

Inheritance with enemies 1 Answer

Accessing variable from parent 1 Answer

CustomEditor and inherited components 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