Streering Behaviors C#
3 participantes
Página 1 de 1
Streering Behaviors C#
Alguém pode me ajudar a encontrar o erro neste código. Meu objetivo é implementar o comportamento de Pusuit. Eu sei que para isso funcionar eu preciso do vetor velocidade do player e multiplicar esse vetor a um segundo vetor Ahead que indica a posição do player alguns segundos no futuro, depois disso eu subtraio o valor dessa operação com o transform.position do player.
O problema é que agora eu quero implementar esse comportamento usando Rigidbody para mover o player. Segue o codigo
Não consigo identificar qual o erro neste código.
O problema é que agora eu quero implementar esse comportamento usando Rigidbody para mover o player. Segue o codigo
Não consigo identificar qual o erro neste código.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScondaryStreeningBehaviour
{
GameObject Object;
float MaxForce, MaxSpeed;
Rigidbody rig;
Vector3 DesiredSteer;
public Vector3 Pursuit(Vector3 target, Vector3 velocityTarget, float MinDistace)
{
float Distance = Vector3.Distance(Object.transform.position, target);
int InterationAhead = 5;
Vector3 TargetSpeed = Distance > MinDistace ? (target - Object.transform.position).normalized * MaxSpeed : (target - Object.transform.position).normalized * MaxSpeed * MinDistace * Distance;
Vector3 TargetFuturePosition = target + (TargetSpeed * InterationAhead);
Vector3 Streering = target - TargetFuturePosition;
DesiredSteer += Streering;
return Streering;
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class Agent : MonoBehaviour
{
Rigidbody rig;
ScondaryStreeningBehaviour instance;
public Transform SeekPoint;
public float maxForce, maxSpeed;
// Use this for initialization
void Start ()
{
rig = GetComponent<Rigidbody>();
instance = new ScondaryStreeningBehaviour(this.gameObject, maxForce, maxSpeed);
}
// Update is called once per frame
void Update ()
{
instance.Pursuit(SeekPoint.position, SeekPoint.gameObject.GetComponent<Rigidbody>().velocity, 3f);
instance.Steer();
}
}
Viniccius- Iniciante
- PONTOS : 2552
REPUTAÇÃO : 0
Respeito as regras :
Re: Streering Behaviors C#
Bom dia, para iniciar, é uma convenção iniciar nome de variáveis como letras minúsculas. Não dá erro, mas só p ficar na norma.
Para que vc faça uma orientação a objeto, ou seja, a chamada de um script através de outro, é um pouco diferente do Java, como vc fez. Segue o link para orientação
https://www.schultzgames.com/t8104-resolvido-sincronizar-uma-bool-que-nao-esta-no-player?nid=90#57346
Para que vc faça uma orientação a objeto, ou seja, a chamada de um script através de outro, é um pouco diferente do Java, como vc fez. Segue o link para orientação
https://www.schultzgames.com/t8104-resolvido-sincronizar-uma-bool-que-nao-esta-no-player?nid=90#57346
Tiago95- Avançado
- PONTOS : 2629
REPUTAÇÃO : 32
Respeito as regras :
Re: Streering Behaviors C#
Tiago95 escreveu:Bom dia, para iniciar, é uma convenção iniciar nome de variáveis como letras minúsculas. Não dá erro, mas só p ficar na norma.
Para que vc faça uma orientação a objeto, ou seja, a chamada de um script através de outro, é um pouco diferente do Java, como vc fez. Segue o link para orientação
https://www.schultzgames.com/t8104-resolvido-sincronizar-uma-bool-que-nao-esta-no-player?nid=90#57346
Viniccius- Iniciante
- PONTOS : 2552
REPUTAÇÃO : 0
Respeito as regras :
Re: Streering Behaviors C#
Para qual finalidade você quer fazer este comportamento de "Pusuit"?
Há algumas maneiras mais simples de fazer isto, mas depende do objetivo.
Há algumas maneiras mais simples de fazer isto, mas depende do objetivo.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos