Hey guys,
I’ve been rewriting the code of my game to allow multiple characters and I have trouble using subclasses.
What I want to do is creating a class “PlayerController” who handle basic stuff that all my characters will do I.E. Moving, Taking Damage, Jumping, etc. but I have trouble handling the moving part.
Here is my code of the PlayerController:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
// Déplacement
private int moveSpeed;
private float move;
// Use this for initialization
void Start () {
}
// Update is called once per frame
public void Update () {
move = Input.GetAxis("Horizontal");
}
void FixedUpdate () {
}
public void Move () {
GetComponent<Rigidbody2D>().velocity = new Vector2 (GetMove() * GetMoveSpeed(), this.GetComponent<Rigidbody2D>().velocity.y);
}
public void SetMoveSpeed(int newMoveSpeed) {
moveSpeed = newMoveSpeed;
}
public int GetMoveSpeed(){
return moveSpeed;
}
public float GetMove(){
return move;
}
}
And now one subclass script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NileigController : PlayerController {
// Use this for initialization
void Start () {
SetMoveSpeed (10);
}
// Update is called once per frame
new void Update () {
PlayerController.Update();
}
new void FixedUpdate () {
PlayerController.Move ();
}
}
But I got these errors:
Assets/Scripts/NileigController.cs(14,20):
error CS0120: An object reference is
required to access non-static member
‘PlayerController.Update()’Assets/Scripts/NileigController.cs(18,20):
error CS0120: An object reference is
required to access non-static member
‘PlayerController.Move()’
The NileigController is on a GameObject that got a RigidBody2D and a BoxCollider2D.