Оператор If Else игнорируется [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Оператор If Else игнорируется [закрыто]

Сообщение Anonymous »

Я снова здесь со своими призраками и неловкой проблемой в моей игре.
Есть «злые» призраки, но есть и такие, которые действуют как своего рода духовные наставники для игрока, которых мы назовем « Служанки", обе следуют за игроком.
Чтобы избежать ошибки "нулевой ссылки" при появлении одного из двух призраков, я решил разделить метод перемещения на две части и поместить одну из них в цикл if: ту, которая всегда следует за игроком, а другой, где призраки следуют за Служанками (в унаследованном классе происходит обратное). При приближении на определенное расстояние призраки перестают следовать за игроком и следуют за Служанками, но условие внутри метода игнорируется.
Спасибо за помощь.
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Security.Cryptography.X509Certificates;
using UnityEngine;
using UnityEngine.Timeline;

public class EnemyMovement : MonoBehaviour
{

Void Awake
{

spriteRenderer = GetComponentInChildren();
player = GameObject.FindGameObjectWithTag("Player");
targetPlayer = player.transform;
handMaid = GameObject.FindGameObjectWithTag("HandMaid");

}

public GhostsScriptable accessGhosts;
public HandMaidsScriptable accessHandMaidsScripts;
protected SpriteRenderer spriteRenderer;
protected GameObject player, handMaid;
protected Transform targetPlayer, targetHandMaid;
[SerializeField] public float moveSpeed = 1.0f;

void FixedUpdate()
{
if(accessHandMaidsScripts.IsLive == true)
{
moveTo(targetPlayer.position, targetHandMaid.position);
Debug.Log("The Ghost Follow the Handmaid");

}
moveToPlayer(targetPlayer.position);
}

public virtual void moveToPlayer(Vector2 playerPosition)
{
transform.position = Vector2.MoveTowards(transform.position, targetPlayer.position,
moveSpeed * Time.deltaTime);

spriteRenderer.flipX = playerPosition.x > transform.position.x;
}

public virtual void moveToEnemies(Vector2 playerPosition, Vector2 handmaidPosition)
{
float distanceBTWHandmaids = Vector2.Distance(transform.position, handmaidPosition);
float distanceBTWPlayer = Vector2.Distance(transform.position, playerPosition);

targetHandMaid = handMaid.transform;

if (distanceBTWHandmaids transform.position.x;

} else
//Maybe can i reuse moveToPlayer Method
Debug.Log($@"Check if follow the Player: {accessGhosts.IsLive}");

transform.position = Vector2.MoveTowards(transform.position, targetPlayer.position,
moveSpeed * Time.deltaTime);

// I know, I need a better solution in future for this:
spriteRenderer.flipX = playerPosition.x > transform.position.x;
}

}


Подробнее здесь: https://stackoverflow.com/questions/786 ... ng-ignored
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»