【发布时间】:2015-01-21 04:49:39
【问题描述】:
我试图让靠近我的玩家的敌人跟随他。 如果他直接在他们面前,我会让他们跟随我的球员,但这不是我想要的。我希望他们投射他的位置或以某种方式让他们在离他如此之近时跟随他。
这是我需要帮助的一点。它附加到被实例化的敌人预制件上。
var playerray : RaycastHit;
var fwd = transform.TransformDirection (Vector3(Player.transform.position.x,Player.transform.position.y,Player.transform.position.z));
if (Physics.Raycast(myTransform.position,fwd, playerray, DetectionDist)){
Debug.DrawRay (transform.position, fwd, Color.red);
}
由于某种原因,基本上方向偏离了,我不知道为什么。
这是完整的脚本以防万一。
#pragma strict
var Speed : float = 8000;
var RayDist : float = 100;
var speed : float = 100;
var Player : Transform;
var attackPoint : Transform;
var Bullet : GameObject;
var myTransform : Transform;
var attackbase: boolean;
var spotted :boolean;
var DetectionDist : int = 100;
function Start(){
myTransform = transform;
Player = GameObject.Find("Player").transform;
attackPoint = GameObject.Find("attackPoint").transform;
}
function Update () {
var hit: RaycastHit;
if (Physics.Raycast(transform.position,transform.forward, hit, RayDist)){
Debug.DrawRay(transform.position,Vector3.forward, Color.green);
if(hit.collider.tag == "Player")
{
spotted = true;
}
}
if(spotted == true){
var F = Quaternion.LookRotation(Vector3(Player.position.x, myTransform.position.y, Player.position.z) - myTransform.position);
transform.rotation = Quaternion.RotateTowards(transform.rotation, F, speed * Time.deltaTime);
myTransform.position += myTransform.forward * Speed * Time.deltaTime;
}
if(spotted == false){
var A = Quaternion.LookRotation(Vector3(attackPoint.position.x, myTransform.position.y, attackPoint.position.z) - myTransform.position);
transform.rotation = Quaternion.RotateTowards(transform.rotation, A, speed * Time.deltaTime);
myTransform.position += myTransform.forward * Speed * Time.deltaTime;
}
//////////////////////ENEMY TO PLAYER RAY////////////////////////////////////////
var playerray : RaycastHit;
var fwd = transform.TransformDirection (Vector3(Player.transform.position.x,Player.transform.position.y,Player.transform.position.z));
if (Physics.Raycast(myTransform.position,fwd, playerray, DetectionDist)){
Debug.DrawRay (transform.position, fwd, Color.red);
}
}
function OnCollisionEnter(coll : Collision){
if(coll.gameObject.tag == "Pbullet"){
Destroy(gameObject);
}
if(coll.gameObject.tag == "Player"){
///attack and make Player flash red.
}
}
【问题讨论】:
-
你为什么希望别人看到你的屏幕截图会遇到这么多麻烦?只需在此处上传即可。
-
对不起 m8 我不是 lv 10 这个网站有一些优点和缺点。
-
非常感谢您的帮助。
标签: unity3d unityscript