Левша, консоль пишет Assets/Scripts/Control.cs(9,16): error CS0120: An object reference is required to access non-static member `UnityEngine.Component.GetComponent(System.Type)'
Если есть такая волшебная кнопка, то почему я о ней не знаю?? На камеру вешаете эффект -> в скрипте находите камеру и компонент-эффект -> производите действие с "параметрами" компонента. ЕСЛИ ВАМ НУЖНЫ ГОТОВЫЕ СКРИПТЫ - ТО ВАМ В ДРУГОЙ РАЗДЕЛ Правила форума · участникGCC
Как сделать генерацию одного объекта по X чтобы этот объект (фото 1) спавнился каждые 1.5 секунды в ограниченном месте (фото 2) и поднимался вверх, а после исчезновения из камеры уничтожался?
Всем привет делаю первую игру но не смыслю в скриптах подскажите как сделать так чтобы при нажатии кнопки (E) объект удалялся и после этого когда я захожу в тригер или гейм обьект мне это отмечалось в правом углу экрана типо (перетащен один объект) и так по нарастающей ?
Помогите нужен скрипт, чтобы при входе в тригер воспроизводился звук, и если можно и картинка (2 скрипта) например идешь, и ветка хрустнула заранее спасибо
var speed = 3.0; var rotationSpeed = 5.0; var shootRange = 15.0; var attackRange = 30.0; var shootAngle = 4.0; var dontComeCloserRange = 5.0; var delayShootTime = 0.35; var pickNextWaypointDistance = 2.0; var target : Transform;
private var lastShot = -10.0;
// Make sure there is always a character controller @script RequireComponent (CharacterController)
function Start () { // Auto setup player as target through tags if (target == null && GameObject.FindWithTag("Player")) target = GameObject.FindWithTag("Player").transform;
Patrol(); }
function Patrol () { var curWayPoint = AutoWayPoint.FindClosest(transform.position); while (true) { var waypointPosition = curWayPoint.transform.position; // Are we close to a waypoint? -> pick the next one! if (Vector3.Distance(waypointPosition, transform.position) < pickNextWaypointDistance) curWayPoint = PickNextWaypoint (curWayPoint);
// Attack the player and wait until // - player is killed // - player is out of sight if (CanSeeTarget ()) yield StartCoroutine("AttackPlayer");
// Move towards our target MoveTowards(waypointPosition);
yield; } }
function CanSeeTarget () : boolean { if (Vector3.Distance(transform.position, target.position) > attackRange) return false;
var hit : RaycastHit; if (Physics.Linecast (transform.position, target.position, hit)) return hit.transform == target;
return false; }
function Shoot () { // Start shoot animation animation.CrossFade("shoot", 0);
// Wait until half the animation has played
// Fire gun BroadcastMessage("Fire");
// Wait for the rest of the animation to finish yield WaitForSeconds(animation["shoot"].length - delayShootTime); }
function AttackPlayer () { var lastVisiblePlayerPosition = target.position; while (true) { if (CanSeeTarget ()) { // Target is dead - stop hunting if (target == null) return;
// Target is too far away - give up var distance = Vector3.Distance(transform.position, target.position); if (distance > shootRange * 3) return;
var forward = transform.TransformDirection(Vector3.forward); var targetDirection = lastVisiblePlayerPosition - transform.position; targetDirection.y = -0;
var angle = Vector3.Angle(targetDirection, forward);
// Start shooting if close and play is in sight if (distance < shootRange && angle < shootAngle) yield StartCoroutine("Shoot"); } else { yield StartCoroutine("SearchPlayer", lastVisiblePlayerPosition); // Player not visible anymore - stop attacking if (!CanSeeTarget ()) return; }
yield; } }
function SearchPlayer (position : Vector3) { // Run towards the player but after 3 seconds timeout and go back to Patroling var timeout = 3.0; while (timeout > 0.0) { MoveTowards(position);
// We found the player if (CanSeeTarget ()) return;
timeout -= Time.deltaTime; yield; } }
function RotateTowards (position : Vector3) { SendMessage("SetSpeed", 0.0);
var direction = position - transform.position; direction.y = -40; if (direction.magnitude < 0.1) return;
// Rotate towards the target transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation(direction), rotationSpeed * Time.deltaTime); transform.eulerAngles = Vector3(0, transform.eulerAngles.y, -40); }
function MoveTowards (position : Vector3) { var direction = position - transform.position; direction.y = 0; if (direction.magnitude < 0.5) { SendMessage("SetSpeed", 0.0); return; }
// Rotate towards the target transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation(direction), rotationSpeed * Time.deltaTime); transform.eulerAngles = Vector3(0, transform.eulerAngles.y, 0);
// Modify speed so we slow down when we are not facing the target var forward = transform.TransformDirection(Vector3.forward); var speedModifier = Vector3.Dot(forward, direction.normalized); speedModifier = Mathf.Clamp01(speedModifier);
// Move the character direction = forward * speed * speedModifier; GetComponent (CharacterController).SimpleMove(direction);
function PickNextWaypoint (currentWaypoint : AutoWayPoint) { // We want to find the waypoint where the character has to turn the least
// The direction in which we are walking var forward = transform.TransformDirection(Vector3.forward);
// The closer two vectors, the larger the dot product will be. var best = currentWaypoint; var bestDot = -10.0; for (var cur : AutoWayPoint in currentWaypoint.connected) { var direction = Vector3.Normalize(cur.transform.position - transform.position); var dot = Vector3.Dot(direction, forward); if (dot > bestDot && cur != currentWaypoint) { bestDot = dot; best = cur; } }
return best; }
Добавлено (27 Окт 2014, 21:38) --------------------------------------------- ai из fps tutorial
Добавлено (27 Окт 2014, 21:47) --------------------------------------------- и еще хотел бы в этом скрипте изменить слежение за объектом а то при выстреле она перестает следить за ним
Ребят, помогите доделать скрипт на перемещение объекта:
Код
if (Input.touchCount > 0) { if (Input.GetMouseButtonDown (0)) { ray1 = Camera.main.ScreenPointToRay (new Vector3(Input.mousePosition.x-Screen.width/2, Input.mousePosition.y-Screen.height/2)); startpoint = ray1.GetPoint (1); startpoint.y = 0; }
if (Input.GetTouch (0).phase==TouchPhase.Moved){ ray2 = Camera.main.ScreenPointToRay (new Vector3(Input.mousePosition.x-Screen.width/2, Input.mousePosition.y-Screen.height/2)); endpoint = ray2.GetPoint (1); endpoint.y = 0; transform.position += endpoint-startpoint; }
камера смотрит вниз на объект. этот объект и надо двинуть, только корректно как драг&дроп. Какие варианты уже только не перепробовал все одно, управление дряное становится. Почему этот скрипт привел помочь доделать - потому что она наиболее корректно себя ведет.
Ну или ткните в ошибку..
Добавлено (30 Ноя 2014, 15:01) --------------------------------------------- Судя по всему помощи можно не ждать..
for (int i = 0; i<Input.touchCount; i++) { if (Input.GetTouch (i).phase.Equals (TouchPhase.Moved)) { Plane mPlane = new Plane (transform.forward, transform.position); Ray ray = Camera.main.ScreenPointToRay (Input.GetTouch (i).position); float dist = 0; if (mPlane.Raycast (ray, out dist)) { transform.position = ray.GetPoint (dist*2); } } }
всякие вариации этого и того. Уже не припомню все варианты.. Я понимаю почему, но просто из всего, что я перепробовал, как ни странно вышло лучше всего..
честно говоря - это единственная запара, которая вылезла..