Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

236
Vistas
Unity Game Engine Tutorial?

My game is a 2D RTS, and I was wondering if anyone knew of a good tutorial for Unity, or if someone well-versed in the syntax of it could tell me what I could have done wrong.

So, I have my camera object, and my player object, both tagged. The player object just has a sprite on it, and is set to rigidbody. The script goes as follows:

using UnityEngine;
using System.Collections;

public class AIsciript : MonoBehaviour
{
private bool thisIsPlayer = true;
private GameObject objPlayer;
private GameObject objCamera;

//input variables (variables used to process and handle input)
private Vector3 inputRotation;
private Vector3 inputMovement;

//identity variables (variables specific to the game object)
public float moveSpeed = 100f;

// calculation variables (variables used for calculation)
private Vector3 tempVector;
private Vector3 tempVector2;

// Use this for initialization
void Start()
{
    objPlayer = (GameObject)GameObject.FindWithTag("Player");
    objCamera = (GameObject)GameObject.FindWithTag("MainCamera");
    if (gameObject.tag == "Player")
    {
        thisIsPlayer = true;
    }
}

// Update is called once per frame
void Update()
{
    FindInput();
    ProcessMovement();
    if (thisIsPlayer == true)
    {
        HandleCamera();
    }
}

void FindInput()
{
    if (thisIsPlayer == true)
    {
        FindPlayerInput();
    }
    else
    {
        FindAIInput();
    }
}
void FindPlayerInput()
{
    //find vector to move
    inputMovement = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));

    //find vector to the mouse
    tempVector2 = new Vector3(Screen.width * 0.5f, 0, Screen.height * 0.5f);

    // the position of the middle of the screen
    tempVector = Input.mousePosition;

    // find the position of the mouse on screen
    tempVector.z = tempVector.y;

    tempVector.y = 0;
    Debug.Log(tempVector);
    inputRotation = tempVector - tempVector2;
}
void FindAIInput()
{

}
void ProcessMovement()
{
    rigidbody.AddForce(inputMovement.normalized * moveSpeed * Time.deltaTime);
    objPlayer.transform.rotation = Quaternion.LookRotation(inputRotation);
    objPlayer.transform.eulerAngles = new Vector3(0, transform.eulerAngles.y + 180, 0);
    objPlayer.transform.position = new Vector3(transform.position.x, 0, transform.position.z);
}
void HandleCamera()
{
    objCamera.transform.position = new Vector3(transform.position.x, 15, transform.position.z);
    objCamera.transform.eulerAngles = new Vector3(90, 0, 0);
}
}

I just figured I would post the code just in case, but I figure it's probably not the issue, as I tried to force it to move in Start() and nothing happened.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

You shouldn't be using all those checks for thisIsPlayer. You should have separate classes for the player entity and non-player entities.

Public variables are exposed in the editor and get serialized with the entity when the level is saved. This could mean that moveSpeed is not currently set to what it is initialized to in this class.

You shouldn't add force to a rigidbody in the Update method. There's a FixedUpdate method that's used for applying physics. This is because Update is called once per frame, no matter what the framerate, and FixedUpdate is only called at specific intervals, so physics forces aren't affected by framerate.

Also, you shouldn't try to apply a force and set the position of the transform of the same object. Strange things will happen.

If you go into the Unity Asset Store (available in the Window menu within Unity) there is a section called "Complete Projects" that contains some free tutorials. I can't remember which of them is written in C#, but even the JavaScript ones will give you some ideas on how to structure the project.

over 4 years ago · Santiago Trujillo Denunciar

0

I don't know if I understood it right: your problem is that it is not moved by the AI?

if this is so, one problem could be that you initialize your

private bool thisIsPlayer = true;

with true but I can not see any condition setting it to false (enter ai mode)

just my 2 cents :)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda