[RESOLVIDO] Ajuda com uma script (JavaScript)
4 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Ajuda com uma script (JavaScript)
Boa Noite :D
Então, modificando umas scripts, consegui finalmente fazer o "INIMIGO" movimentar apenas os braços/cabeça e não o corpo inteiro ao mirar para o player
porem estou com um problema, o INIMIGO esta seguindo os movimentos da camera do player, eu queria fazer o inimigo olhar direto para o player/camera do player, que seria o "soldierCamera" mais ele não esta mirando para o player, e sim seguindo os movimentos da camera do player
ou seja, se o player olha pro lado o inimigo tambem olha na mesma direção, a intenção é fazer ele mirar para o player
Alguem ai pra me dar uma ideia?
Segue o script
Obrigado desde já! :D
Então, modificando umas scripts, consegui finalmente fazer o "INIMIGO" movimentar apenas os braços/cabeça e não o corpo inteiro ao mirar para o player
porem estou com um problema, o INIMIGO esta seguindo os movimentos da camera do player, eu queria fazer o inimigo olhar direto para o player/camera do player, que seria o "soldierCamera" mais ele não esta mirando para o player, e sim seguindo os movimentos da camera do player
ou seja, se o player olha pro lado o inimigo tambem olha na mesma direção, a intenção é fazer ele mirar para o player
Alguem ai pra me dar uma ideia?
Segue o script
- Código:
var soldierCamera : Transform;
var headRotationFix : Vector3 = Vector3(180,90,90);
var crosshair : Transform;
private var target : Vector3;
private var targetTarget : Vector3; //The target for Mathf.Lerp to the target.
private var rightUpperArm : Transform;
private var rightClavicle : Transform;
private var leftUpperArm : Transform;
private var leftClavicle : Transform;
private var leftForearm : Transform;
private var leftFinger : Transform;
private var spine1 : Transform;
private var spine2 : Transform;
private var head : Transform;
private var neck : Transform;
private var cameraYRotation : float;
private var cameraPitch : float;
private var torsoOffsetAngle : float;
private var torsoOffsetPitch : float;
private var leanHead : float = 0.0;
private var soldierAnimationScript : soldierAnimation;
private var leftArmIkScript : MonoBehaviour;
private var ikArm : Transform;
private var ikUpperArm : Transform;
private var ikForearm : Transform;
private var transition : float;
private var transitionTarget : float; // 0 means normal animation, 1 means complete aim.
private var transition2 : float;
private var transition2Target : float; // 0 means normal animation, 1 means complete aim. For head and torso.
function Start(){
spine1 = transform.Find("mech_bot/Bip01/Bip01 Pelvis/Bip01 Spine/Bip01 Spine1");
spine2 = transform.Find("mech_bot/Bip01/Bip01 Pelvis/Bip01 Spine/Bip01 Spine1/Bip01 Spine2");
neck = spine2.Find("Bip01 Neck");
rightClavicle = transform.Find("mech_bot/Bip01/Bip01 Pelvis/Bip01 Spine/Bip01 Spine1/Bip01 Spine2");
rightUpperArm = rightClavicle.Find("Bip01 Neck");
leftClavicle = neck.Find("Bip01 L Clavicle");
leftUpperArm = leftClavicle.Find("Bip01 L UpperArm");
leftForearm = leftUpperArm.Find("Bip01 L Forearm");
leftFinger = leftForearm.Find("Bip01 L Hand/Bip01 L Finger2/Bip01 L Finger21");
head = neck.Find("Bip01 Head");
soldierAnimationScript = GetComponent("soldierAnimation");
var upperArmLength : float = Vector3.Distance(leftUpperArm.position, leftForearm.position);
var forearmLength : float = Vector3.Distance(leftForearm.position, leftFinger.position);
}
function LateUpdate(){
//Target.
var targetRay : Ray = soldierCamera.GetComponent.<Camera>().ViewportPointToRay(crosshair.position);
var targetRayDistance : float = 300.0;
var targetHit : RaycastHit;
targetTarget = targetRay.origin + targetRay.direction * targetRayDistance;
target = Vector3.Lerp(target,targetTarget,Time.deltaTime * 10.0);
var aimAid : Transform = new GameObject("aidAim").transform; //This will be used to aid the body parts aim in the rigth direction.
//Transition 1(arms).
transitionTarget = 1.0;
//Store pre-rotations.
var rightUpperArmLocalRotation : Quaternion = rightUpperArm.localRotation;
var leftUpperArmLocalRotation : Quaternion = leftUpperArm.localRotation;
var leftForearmLocalRotation : Quaternion = leftForearm.localRotation;
var headLocalRotation : Quaternion = head.localRotation;
var spine1LocalRotation : Quaternion = spine1.localRotation;
var spine2LocalRotation : Quaternion = spine2.localRotation;
//Aiming.
var characterYRotation : float = transform.rotation.eulerAngles.y;
var spineYRotation : float = spine1.rotation.eulerAngles.y + 60;
if (soldierCamera != null){
cameraYRotation = soldierCamera.rotation.eulerAngles.y;
cameraPitch = soldierCamera.localRotation.eulerAngles.x;
}
var deltaTorsoAngle : float = Mathf.DeltaAngle(spineYRotation, cameraYRotation);
torsoOffsetAngle = Mathf.Lerp(torsoOffsetAngle, deltaTorsoAngle, Time.deltaTime * 15.0);
var deltaTorsoPitch : float = Mathf.DeltaAngle(0, cameraPitch);
torsoOffsetPitch = Mathf.Lerp(torsoOffsetPitch, deltaTorsoPitch, Time.deltaTime * 15.0);
spine1.localRotation.eulerAngles.x -= torsoOffsetAngle * .5;
spine2.localRotation.eulerAngles.x -= torsoOffsetAngle * .5;
spine1.localRotation.eulerAngles.z -= torsoOffsetPitch * .5;
spine2.localRotation.eulerAngles.z -= torsoOffsetPitch * .5;
aimAid.position = rightUpperArm.position;//Right arm.
var gunAim : Transform = rightUpperArm.Find("Bip01 R Forearm/Bip01 R Hand/gun/gunAim");
aimAid.LookAt(gunAim);
rightUpperArm.parent = aimAid;
aimAid.LookAt(target);
rightUpperArm.parent = rightClavicle;
aimAid.position = leftUpperArm.position;//Upper arm.
aimAid.LookAt(leftForearm);
leftUpperArm.parent = aimAid;
var gunGrab : Transform = rightUpperArm.Find("Bip01 R Forearm/Bip01 R Hand/gun/gunGrab");
aimAid.LookAt(gunGrab);
leftUpperArm.parent = leftClavicle;
//IK. (Left arm).
var leftElbowTarget : Transform = spine2.Find("leftElbowTarget");
Destroy(aimAid.gameObject);
if (soldierCamera != null){ //Head.
head.LookAt(target);
head.Rotate(headRotationFix);
//Lean head so it doesn't intersects with the gun.
var minHeadLeanAngle : float = 0.0;
var maxHeadLeanAngle : float = 120.0;
var fullLeanAngle : float = 20;
var leanHeadTarget : float = 0.0;
if (head.localRotation.eulerAngles.x > minHeadLeanAngle && head.localRotation.eulerAngles.x < maxHeadLeanAngle){
leanHeadTarget = head.localRotation.eulerAngles.x - minHeadLeanAngle; //Angle for leaning the head.
leanHeadTarget /= maxHeadLeanAngle;
leanHeadTarget *= fullLeanAngle;
}
leanHead = Mathf.Lerp(leanHead, leanHeadTarget, Time.deltaTime * 5.0);
head.Rotate(0,leanHead,0);
}
//Transition 1.
transition = Mathf.Lerp(transition, transitionTarget, Time.deltaTime * 5.0);
if(transition < 1.0){ //Only Lerp if transitionTarget is between 0 and 1.
rightUpperArm.localRotation = Quaternion.Lerp(rightUpperArmLocalRotation, rightUpperArm.localRotation, transition);
leftUpperArm.localRotation = Quaternion.Lerp(leftUpperArmLocalRotation, leftUpperArm.localRotation, transition);
leftForearm.localRotation = Quaternion.Lerp(leftForearmLocalRotation, leftForearm.localRotation, transition);
}
//Transition 2.
transition2 = Mathf.Lerp(transition2, transition2Target, Time.deltaTime * 5.0);
if(transition2 < 1.0){ //Only Lerp if transitionTarget is between 0 and 1.
head.localRotation = Quaternion.Lerp(headLocalRotation, head.localRotation, transition2);
spine1.localRotation = Quaternion.Lerp(spine1LocalRotation, spine1.localRotation, transition2);
spine2.localRotation = Quaternion.Lerp(spine2LocalRotation, spine2.localRotation, transition2);
}
}
Obrigado desde já! :D
Última edição por NandoDine em Sex Nov 18, 2016 12:36 am, editado 1 vez(es)
NandoDine- Membro
- PONTOS : 2978
REPUTAÇÃO : 5
Áreas de atuação : JS, PHP, MySQL, Web Design (Estudando C#)
Respeito as regras :
Re: [RESOLVIDO] Ajuda com uma script (JavaScript)
Boa tarde brow! Não entendi muito bem, mas veja se resolve pra ti, já tentasse o Look At? com ele o inimigo ficará sempre olhando para o alvo que você definir, ou seja o player. Dá um olhada na doc da Unity, tem exemplo, é bem simples, em C# e JS, mas um conselho, o JS já não tem mais suporte da Unity, talvez seja bom você migrar para C#. Segue link: https://docs.unity3d.com/ScriptReference/Transform.LookAt.html .
Abraço :D
Abraço :D
Re: [RESOLVIDO] Ajuda com uma script (JavaScript)
Opa e ai brow, Boa Tarde :D nossa não sabia que JS não tem mais suporte da unity '-', bom saber, vo começar a migrar tudo para c# enquanto ta no começo o projeto hehedstaroski escreveu:Boa tarde brow! Não entendi muito bem, mas veja se resolve pra ti, já tentasse o Look At? com ele o inimigo ficará sempre olhando para o alvo que você definir, ou seja o player. Dá um olhada na doc da Unity, tem exemplo, é bem simples, em C# e JS, mas um conselho, o JS já não tem mais suporte da Unity, talvez seja bom você migrar para C#. Segue link: https://docs.unity3d.com/ScriptReference/Transform.LookAt.html .
Abraço :D
Cara, Obrigado ae pelo link, bom saber.. estou começando agora no Unity, mais ja era fusado em PHP e JS. por isso preferia em JS as scripts hehe
mais okay, to começando a entender e estudando um pouco a linguagem c#
mas voltando ao assunto, eu queria fazer apenas o INIMIGO movimentar a cabeça e os braços para cima e para baixo conforme o PLAYER vai subindo
ou seja, se o player esta em cima de um.. Telhado por exemplo e o inimigo em solo, o inimigo olha pra cima somente a cabeça, e ergue os braços com arma em punho. mais me passarão a ideia do IK (Inverse Kinematcs) então to dando uma estudada.
Se tiver alguma ideia para compartilhar ai hehe :D
Valeeuu Abraço :D
NandoDine- Membro
- PONTOS : 2978
REPUTAÇÃO : 5
Áreas de atuação : JS, PHP, MySQL, Web Design (Estudando C#)
Respeito as regras :
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [RESOLVIDO] Ajuda com uma script (JavaScript)
weslleyFx escreveu:talvez esse video ajude
Valeu Parceiro, to dando uma Estudada Nisso :D
NandoDine- Membro
- PONTOS : 2978
REPUTAÇÃO : 5
Áreas de atuação : JS, PHP, MySQL, Web Design (Estudando C#)
Respeito as regras :
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [RESOLVIDO] Ajuda com uma script (JavaScript)
- Código:
#pragma strict
var Target : Transform;
var Damping = 6.0;
function Update (){
var rotation = Quaternion.LookRotation(Target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
}
Toma ae um script para ajudar vc!!! :D :D :D
(Jogue no inimigo o script e tbm bote o Target no transform do seu player)
Dayzr- Membro
- PONTOS : 3020
REPUTAÇÃO : 11
Idade : 21
Respeito as regras :
Re: [RESOLVIDO] Ajuda com uma script (JavaScript)
Opa e ae parceiro Blz :D, do inimigo Olhar para o player, estou usando o lookat hehe,Dayzr escreveu:
- Código:
#pragma strict
var Target : Transform;
var Damping = 6.0;
function Update (){
var rotation = Quaternion.LookRotation(Target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
}Toma ae um script para ajudar vc!!! :D :D :D
e esta script ae eu já tenho ela também , mais neste tópico, eu queria fazer o inimigo movimentar apenas algumas partes do corpo conforme ele mirava para o player, porém eu já consegui fazer isso usando IK (Inverse Kinematics) olhando através de uns tutoriais, finalmente consegui chegar ao ponto em que queria..
Obrigado aee pela atenção Parceiro, ajuda sempre bem vinda hehe :D
NandoDine- Membro
- PONTOS : 2978
REPUTAÇÃO : 5
Áreas de atuação : JS, PHP, MySQL, Web Design (Estudando C#)
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] AJUDA COM SCRIPT
» [RESOLVIDO] ajuda no script
» [RESOLVIDO] Ajuda com Script de Mensagem
» [RESOLVIDO] Ajuda com script simples
» [RESOLVIDO] Ajuda com Script convertido
» [RESOLVIDO] ajuda no script
» [RESOLVIDO] Ajuda com Script de Mensagem
» [RESOLVIDO] Ajuda com script simples
» [RESOLVIDO] Ajuda com Script convertido
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos